<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <textarea id="area"></textarea><br> <button id="btn">сортировать</button> <script> var dic = ['a','b','c','d','e','f','g','h','i','j','k','l']; var ots = (s, el)=> !dic.includes(el) ? ++s : s; var sum = (s, el)=>{ var ind = dic.indexOf(el); return ind != -1 ? s + ind : s; }; btn.onclick = e => { var arr = area.value .split(/\n/) .sort((a,b)=>(a.split('').reduce(ots,0) - b.split('').reduce(ots,0) ) || (b.split('').reduce(sum,0) - a.split('').reduce(sum,0))); area.value = arr.join('\n'); }; </script> </body> </html> над производительностью не заморачивался. |
сортировка строк
j0hnik,
Alexandroppolus, :thanks: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <textarea id="area" rows="20">b a 1111b 1111a</textarea><br> <button id="btn">сортировать</button> <script> var dic = ['a','b','c','d','e','f','g','h','i','j','k','l'].reduce((obj, char, i) => (obj[char] = i, obj), {}); btn.onclick = e => { var arr = area.value .split(/\n/) .map(el => el.split("").reduce((obj,char) => (char in dic ? obj.sum += dic[char] : obj.len++, obj), {str : el, len : 0, sum : 0})) .sort((a,b)=>(a.len - b.len || b.sum - a.sum)); area.value = arr.map(Object.values).join('\n'); //строка, кол-во неизвестных, сумма известных }; </script> </body> </html> |
Здравствуйте уважаемые форумчане. Я нахожусь в начале пути. Помогите с задачей. Голову сломал и тупик.
Напишите программу которая в последовательности натуральных чисел определяет сумму чисел, кратных 6. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число кратное 6. Кол-во чисел не превышает 100. Введённые числа не превышают 300. Программа должна ввести одно число - сумму чисел кратных 6. Вот что навоял, вариантов была масса - это последний. var summ = 0; for (var i = Number(prompt("число",0)); i<=100; i+=6){ if (i>100){ alert ("Ошибка"); } else (summ +=i); } document.write(summ +"<br/>"); Понимаю что все не правильно, но знаю как отсеять методом деления (if i%6) continue. а как отсеянное вывести на экран? И alert не работает. Большое спасибо! |
или не туда или не то написал.:blink:
|
Цитата:
|
j0hnik,
:-? получить длину массива от 1 до 100, затем элементы массива от 1 до 300, затем суммирование чисел кратных 6 из этого массива. |
я и сам плохо понимаю, но репетитор дал задачу и в интернете она тоже есть. только нет решения. количество чисел не превышает сто, а введенные числа не превышают 300. я подумал сначала что сделаю хоть как нибудь. сейчас надеюсь на Вас.
|
Так откуда возьмутся 300 если ввели 100, а нужно только каждое 6 число. Если интересно, то их две однотипные задачи. Могу и её выложить, но если смогу эту то и ту тоже.
|
Можно оптимизировать.
const arrayLength=prompt('Кол-во элементов массива',3)||3; const result=(prompt('Элементы массива через запятую','3,6,12')||'').split(',').slice(0,arrayLength).map(i=>+i.trim()).filter(i=>i%6===0).reduce((r,i)=>r+i,0); alert(result); |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 06:32. |