Вдохновленный Создать бинарную стену
Учитывая список натуральных чисел, мы можем выписать их все друг над другом, например, так [2, 6, 9, 4]
:
0010
0110
1001
0100
Мы можем представить это как стену:
..#.
.##.
#..#
.#..
Однако это очень слабая стена, и она рухнула! Каждый 1
( #
) падает, пока не достигнет "земли" или другого 1
( #
). В 0
ы ( .
ы) присутствуют в местах , оставленных перемещаемых 1
с.
Это становится следующим:
....
....
.##.
####
Что переводится обратно в:
0000
0000
0110
1111
Который, как список чисел, является [0, 0, 6, 15]
.
Еще один тест
[10, 17, 19, 23]
Это становится:
01010
10001
10011
10111
который становится:
00000
10011
10011
11111
перевод обратно на:
[0, 19, 19, 31]
Вызов
Учитывая список натуральных чисел, примените это преобразование к списку. Ввод / вывод в виде списков натуральных чисел в любом приемлемом формате. Применяются стандартные лазейки.
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах!