Задача на Codewars: Sorting by bits
Решаю задачу по JS на codewars (ссылка: https://www.codewars.com/kata/59fa8e2646d8433ee200003f/train/javascript).
Мой код:
function sortByBit(arr) {
function countDigits(cd) {
let sum = 0;
for (let i = 0; i < cd.length; i++) {
sum += parseInt(cd[i]);
}
return sum;
}
return arr.sort((a, b) => a - b).sort((a, b) => {
return countDigits(parseInt(a).toString(2)) - countDigits(parseInt(b).toString(2));
});
}
Тестил код в консоле VScode и консоли браузера Chrome. Результат: решение правильное. Но почему-то, при тестировании решения на codewars выходит ошибка, решение неверно.
Expected: [0, 2, 2, 4, 8, 8, 3, 5, 5, 6, 9, 7, 56], instead got: [0, 2, 4, 2, 8, 8, 3, 6, 9, 5, 5, 7, 56].
В консоли VSCode и Chrome у меня выходит правильный результат: [0, 2, 2, 4, 8, 8, 3, 5, 5, 6, 9, 7, 56].
В чем может быть причина?
Ответы (1 шт):
Автор решения: Qwertiy
→ Ссылка
Два последовательных вызова sort - фигня, потому что js не гарантирует стабильную сортировку.