Inspiriert von Erstellen Sie eine binäre Wand
Ausgehend von einer Liste positiver Ganzzahlen können wir sie wie folgt übereinander schreiben [2, 6, 9, 4]
:
0010
0110
1001
0100
Wir können uns das als Wand vorstellen:
..#.
.##.
#..#
.#..
Dies ist jedoch eine sehr schwache Mauer, die eingestürzt ist! Jedes 1
( #
) fällt herunter, bis es auf den "Boden" oder ein anderes 1
( #
) trifft . Die 0
s ( .
s) sind an Stellen vorhanden, die von bewegten 1
s übrig bleiben .
Dies wird wie folgt:
....
....
.##.
####
Was übersetzt zurück zu:
0000
0000
0110
1111
Was als Liste von Zahlen ist [0, 0, 6, 15]
.
Ein weiterer Testfall
[10, 17, 19, 23]
Dies wird:
01010
10001
10011
10111
was wird:
00000
10011
10011
11111
zurück zu übersetzen:
[0, 19, 19, 31]
Herausforderung
Wenden Sie diese Transformation bei einer Liste positiver Ganzzahlen auf die Liste an. Eingabe / Ausgabe als Liste positiver Ganzzahlen in einem beliebigen Format. Es gelten Standardlücken.
Dies ist ein Code-Golf , also gewinnt die kürzeste Antwort in Bytes!