Inspirado por Criar uma parede binária
Dada uma lista de números inteiros positivos, podemos escrevê-los todos acima um do outro, assim, por [2, 6, 9, 4]
exemplo:
0010
0110
1001
0100
Podemos imaginar isso como uma parede:
..#.
.##.
#..#
.#..
No entanto, este é um muro muito fraco e entrou em colapso! Cada 1
( #
) cai até atingir o "solo" ou outro 1
( #
). Os 0
s .
estão presentes nos pontos deixados pelos 1
s movidos .
Isso se torna o seguinte:
....
....
.##.
####
O que se traduz novamente em:
0000
0000
0110
1111
Qual, como uma lista de números, é [0, 0, 6, 15]
.
Outro caso de teste
[10, 17, 19, 23]
Isso se torna:
01010
10001
10011
10111
que se torna:
00000
10011
10011
11111
traduzindo de volta para:
[0, 19, 19, 31]
Desafio
Dada uma lista de números inteiros positivos, aplique essa transformação à lista. Entrada / Saída como listas de números inteiros positivos em qualquer formato razoável. Aplicam-se brechas padrão.
Este é um código-golfe , então a resposta mais curta em bytes vence!