<!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, время: 11:07. |