Натхненний створенням бінарної стіни
Враховуючи список натуральних чисел, ми можемо виписати їх над собою, [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]
Виклик
Давши список натуральних чисел, застосуйте це перетворення до списку. Введення / виведення як списки натуральних чисел у будь-якому розумному форматі. Застосовуються стандартні лазівки.
Це кодовий гольф , тому найкоротша відповідь у байтах виграє!