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?"...
Antworten:
JavaScript (ES6),
1009088 BytesErfordert, dass die Zeichenfolge mindestens zwei Zeilen enthält und alle Zeilen auf die gleiche Länge aufgefüllt sind. Ausgabe für das Beispielbild:
Beachten Sie, dass beim Versuch, Elemente nach rechts zu verschieben, die
*
Zeichen nicht zwischen die ZeichenHave
und fallenyou
.Bearbeiten: Dank @ETHproductions 10% gespart. Dank @DanielIndie wurden weitere 2 Bytes gespeichert.
Retina 0,8,2 , 50 Bytes
Probieren Sie es online! Eine etwas andere Herangehensweise an meine JavaScript-Antwort. Hierbei wird eine Ausgleichsgruppe verwendet, um ein Leerzeichen unter dem Nicht-Leerzeichen-Zeichen abzugleichen. Das
(?<-1>)?
erlaubt, dass der Abstand eine Spalte nach links ist, während das.?
erlaubt, dass der Abstand eine Spalte nach rechts ist.Retina , 40 Bytes
Probieren Sie es online! Port meiner JavaScript-Antwort. Die
0L$
atomare Stufe nimmt die Eingabe und setzt die beiden Längen in die zweite Zeile ein, was zu dem Befehl führt, der die Ersetzung tatsächlich durchführt, der dann an der ursprünglichen Eingabe von der~
zusammengesetzten Stufe ausgewertet wird .quelle
\n
mit einem wörtlichen Zeilenumbruch ersetzen , um es auf zwei Ziffern zu bringen ;-)l=s.search`\n`
ein paar Bytes sparen.f=
wird für die Rekursion benötigt, spart mir aber trotzdem 2 Bytes, danke!Python 2, 298 Bytes
Nimmt die Eingabe als Liste von Zeichenfolgen (eine pro Zeile)
Beispiel: Eingabe:
Ausgabe:
quelle
C 252 Bytes
Ungolfed-Testcode:
Ergebnis der Prüfung:
quelle
Algodoo (nicht konkurrierend)
Eingabe - entartetes Beispiel verwendet.
Laufen - Standardschwerkraft und Hüpfen.
Die Ausgabegenauigkeit kann über die Einstellungen für Reibung und Dichte an den Objekten angepasst werden.
Algodoo ist logisch programmierbar .
quelle
JavaScript, 286 Bytes
Beispiele
Ausgabe:
Ein anderes Beispiel:
Ausgabe:
Ungolfed Funktion
quelle
c>" "
woc
das Zeichen repräsentieren Sie testen.