Софтуерно Инженерство
Loading...
+ Нов въпрос
gina78 avatar gina78 -4 Точки

сортиране на числа

Здравейте, искам да напиша конзолна програма
 която брои колко пъти излизат числа и да ги изпиши, 
кое число най много пъти излиза.Някой знай ли?

Пример:

2 18 20 26 28
8 19 23 25 34
1 17 23 29 35
10 21 23 24 25
2 3 19 29 34
12 20 21 28 29
7 24 26 27 28
1 3 11 21 26
9 12 13 23 27
8 11 24 31 32
2 18 27 30 35

willystyle avatar willystyle 1159 Точки

Прилича на статистика за тото 5 от 35 :)

За край на входа въвеждай "end" (реализирана е с речник, учи се в следващия курс).

https://pastebin.com/1prj6ajK

 

 

1
JivkoJelev avatar JivkoJelev 238 Точки

function sortArray(arr, obj){

return arr.map(num => obj[num] == undefined ? obj[num] = 1 : obj[num]++) && obj;

}

console.log(sortArray([2, 18, 20, 26, 28, 8, 19, 23, 25, 34,1, 17, 23, 29, 35,10, 21, 23, 24, 25,2, 3, 19, 29, 34,12, 20 ,21, 28, 29,7, 24, 26, 27, 28,1, 3, 11, 21, 26,9, 12, 13, 23, 27,8, 11, 24, 31, 32,2, 18, 27, 30, 35], {}));

1
willystyle avatar willystyle 1159 Точки

Това е добро, но за да е пълна задачата, трябва да се подреди, за целта обект не върши работа (трябва да вадим keys ама ще развалим one-liner-а :) затова предлагам Map() и решението остава на 1 ред:

function sortMap(arr, map){

  return arr.map(num => map.has(num) ? map.set(num, map.get(num) + 1) : map.set(num, 1)) && new Map([...map.entries()].sort((a, b) => b[1] - a[1]));

}

console.log(sortMap([2, 18, 20, 26, 28, 8, 19, 23, 25, 34, 1, 17, 23, 29, 35, 10, 21, 23, 24, 25, 2, 3, 19, 29, 34, 12, 20 ,21, 28, 29, 7, 24, 26, 27, 28, 1, 3, 11, 21, 26, 9, 12, 13, 23, 27, 8, 11, 24, 31, 32, 2, 18, 27, 30, 35], new Map()));

1
gina78 avatar gina78 -4 Точки

Благодаря ти много колега

1