Сортировка по битам(codewars 6kyu)

В этом ката вам предстоит отсортировать массив 32-битных целых чисел в порядке возрастания количества имеющихся в них битов.

Например, учитывая массив [7, 6, 15, 8]

7 имеет 3 бита (000...0 111 ) 6 имеет 2 бита (000...0 11 0) 15 имеет 4 бита (000... 1111 ) 8 имеет 1 бит (000... 1 000) Таким образом, отсортированный массив будет иметь вид [8, 6, 7, 15] .

В тех случаях, когда два числа имеют одинаковое количество бит, вместо этого сравните их реальные значения.

Например, между 10 (...1010) и 12 (...1100) они оба имеют одинаковое количество битов '2', но целое число 10 меньше 12, поэтому оно идет первым в отсортированном порядке.

Ваша задача — написать функцию, которая принимает массив целых чисел и сортирует их, как описано выше.

Примечание. Ваше решение должно сортировать массив на месте .

Пример:

[3, 8, 3, 6, 5, 7, 9, 1] => [1, 8, 3, 3, 5, 6, 9, 7]

Мой код:

def sort_by_bit(arr): 
    # your code
    arr_sort = sorted(list(map(bin, arr)), key=lambda x: (x.count('1'), int(x, 2)))
    return list(map(lambda x: int(x, 2), arr_sort))

 output:
Time: 510ms Passed: 0Failed: 2Exit Code: 1
Test Results:
Test: Sorting by bits
Test
Wrong: [3, 8, 3, 6, 5, 7, 9, 1] should equal [1, 8, 3, 3, 5, 6, 9, 7]
Wrong: [9, 4, 5, 3, 5, 7, 2, 56, 8, 2, 6, 8, 0] should equal [0, 2, 2, 4, 8, 8, 3, 5, 5, 6, 9, 7, 56]

Не могу понять в чем проблема.


Ответы (0 шт):