Zainspirowany przez Utwórz ścianę binarną
Biorąc pod uwagę listę dodatnich liczb całkowitych, możemy zapisać je wszystkie nad sobą tak, na [2, 6, 9, 4]
przykład:
0010
0110
1001
0100
Możemy to sobie wyobrazić jako ścianę:
..#.
.##.
#..#
.#..
Jest to jednak bardzo słaby mur, który się zawalił! Każda 1
( #
) spada, aż uderzy w „ziemię” lub inną 1
( #
). W 0
s ( .
a) są obecne w miejscach pozostawionych przez przenoszonych 1
s.
Staje się to następujące:
....
....
.##.
####
Co przekłada się z powrotem na:
0000
0000
0110
1111
Który jako lista liczb jest [0, 0, 6, 15]
.
Kolejny przypadek testowy
[10, 17, 19, 23]
Staje się to:
01010
10001
10011
10111
który staje się:
00000
10011
10011
11111
tłumacząc z powrotem na:
[0, 19, 19, 31]
Wyzwanie
Biorąc pod uwagę listę dodatnich liczb całkowitych, zastosuj tę transformację do listy. Dane wejściowe / wyjściowe jako listy liczb całkowitych dodatnich w dowolnym rozsądnym formacie. Obowiązują standardowe luki.
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach!