Inspirado en Crear un muro binario
Dada una lista de enteros positivos, podemos escribirlos uno encima del otro, por [2, 6, 9, 4]
ejemplo:
0010
0110
1001
0100
Podemos imaginar esto como un muro:
..#.
.##.
#..#
.#..
Sin embargo, esta es una pared muy débil, ¡y se ha derrumbado! Cada 1
( #
) cae hasta que toca el "suelo" u otro 1
( #
). Las 0
s ( .
s) están presentes en los puntos que dejó la 1
s movida .
Esto se convierte en lo siguiente:
....
....
.##.
####
Lo que se traduce de nuevo a:
0000
0000
0110
1111
Que, como una lista de números, es [0, 0, 6, 15]
.
Otro caso de prueba
[10, 17, 19, 23]
Esto se convierte en:
01010
10001
10011
10111
que se convierte en:
00000
10011
10011
11111
traduciendo de nuevo a:
[0, 19, 19, 31]
Reto
Dada una lista de enteros positivos, aplique esta transformación a la lista. Entrada / Salida como listas de enteros positivos en cualquier formato razonable. Se aplican lagunas estándar.
Este es un código de golf , por lo que gana la respuesta más corta en bytes.