Herausforderung
Schreiben Sie bei einem rechteckigen Raster aus druckbaren ASCII-Zeichen als Zeichenfolge oder über die Standardeingabe eine Funktion oder ein Programm, mit dem die nicht-Leerzeichen in einem Stapel unten zusammengefasst werden.
Die Regeln:
- Die Ausgabe hat die gleichen Abmessungen und Zeichen wie die Eingabe.
- Ein nicht-Leerzeichen an
(row a,column b)
kann kein Leerzeichen hat' '
an(a-1, b)
,(a-1,b-1)
oder(a-1,b+1)
, wo Zeilen werden von dem am weitesten unten nummeriert werden. Dies hat zur Folge, dass alle vertikalen Pfähle seitlich zusammenbrechen sollten. - Ein Nicht-Leerzeichen kann sich an den meisten
(initial height - final height)
Stellen nach links oder rechts bewegen (siehe Abb. 1). - Sie können davon ausgehen, dass das Bild genügend Platz zum Ausblenden hat, ohne dass Zeichen aus dem Bildschirm fallen.
Abbildung 1: Mögliche Endpositionen für die @#$
als angezeigten Zeichen x,y,z
.
..............
...@..........
..xxx.........
.xxxxx...#....
xxxxxxx.yyy.$.
Die Reihenfolge, in der die Zeichen zusammenfallen, kann frei gewählt werden. Nachgestellte Leerzeichen sind nicht in Ordnung, nachgestellte Zeilenumbrüche jedoch.
Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes!
Beispiel
(__)
(oo)
/------\/
/ | ||
* /\---/\
~~ ~~
..."Have you mooed today?"...
Eine mögliche Ausgabe:
--(_
/----|/|(o_)
/|/~\---~\\/o)
..."Have*you~mooed~today?"...