Inspiré par Créer un mur binaire
Étant donné une liste d'entiers positifs, nous pouvons les écrire les uns au-dessus des autres de cette manière, par [2, 6, 9, 4]
exemple:
0010
0110
1001
0100
On peut imaginer cela comme un mur:
..#.
.##.
#..#
.#..
Cependant, c'est un mur très faible et il s'est effondré! Chaque 1
( #
) tombe jusqu'à ce qu'il touche le «sol» ou un autre 1
( #
). Les 0
s ( .
s) sont présents dans les taches laissées par les 1
s déplacés .
Cela devient le suivant:
....
....
.##.
####
Ce qui se traduit par:
0000
0000
0110
1111
Ce qui, en tant que liste de nombres, est [0, 0, 6, 15]
.
Un autre cas de test
[10, 17, 19, 23]
Cela devient:
01010
10001
10011
10111
qui devient:
00000
10011
10011
11111
traduire en:
[0, 19, 19, 31]
Défi
Étant donné une liste d'entiers positifs, appliquez cette transformation à la liste. Entrée / sortie sous forme de listes d'entiers positifs dans n'importe quel format raisonnable. Des échappatoires standard s'appliquent.
Il s'agit d'un code-golf , donc la réponse la plus courte en octets gagne!