Défi
Étant donné une grille rectangulaire de caractères ascii imprimables sous forme de chaîne ou via une entrée standard, écrivez une fonction ou un programme qui réduit les caractères non spatiaux en une pile en bas.
Les règles:
- La sortie a les mêmes dimensions et caractères que l'entrée.
- Un caractère non espace dans
(row a,column b)ne peut pas avoir de caractère espace' 'dans(a-1, b),(a-1,b-1)ou(a-1,b+1), où les lignes sont numérotées à partir du bas. Cela a pour conséquence que tous les pieux verticaux doivent s'effondrer latéralement. - Un personnage non spatial peut se déplacer dans la plupart des
(initial height - final height)endroits vers la gauche ou la droite (voir Fig. 1). - Vous pouvez supposer que l'image a suffisamment d'espace pour se réduire sans que des caractères ne tombent de l'écran.
Figure 1: emplacements finaux possibles pour les caractères @#$représentés par x,y,z, respectivement.
..............
...@..........
..xxx.........
.xxxxx...#....
xxxxxxx.yyy.$.
L'ordre dans lequel les caractères s'effondrent peut être choisi librement. Les espaces de fin ne sont pas corrects, mais les retours à la ligne de fin le sont.
C'est le code-golf , donc la réponse la plus courte en octets l'emporte!
Exemple
(__)
(oo)
/------\/
/ | ||
* /\---/\
~~ ~~
..."Have you mooed today?"...
Une sortie possible:
--(_
/----|/|(o_)
/|/~\---~\\/o)
..."Have*you~mooed~today?"...



