Sandbox Post hier .
Erstellen Sie eine Funktion oder ein Programm, das eine Zeichenfolge "springt".
- Die Eingabe ist ein String in Stdin oder die nächstgelegene Alternative
- Die Eingabe enthält nur druckbare ASCII- und / oder Leerzeichen
- Die Ausgabe erfolgt nach Stdout oder der nächstgelegenen Alternative
- Nachgestellte Zeilenumbrüche und Leerzeichen sind zulässig
Wie man einen String springt
- Formatieren Sie den String in beliebig viele ASCII-Federspulen
- Füllen Sie die Spulen mit Leerzeichen bis zur nächsten Spule
- Lesen Sie die Zeichen ab und folgen Sie der Feder um die Spulen
Dies ist eine ASCII-Federspule:
#
# ####
# #
# ####
#
Wo die #s die Zeichen des Strings sind
Hier ist ein Beispiel:
abcdefghijklmnopqrstuvwxyz
wird
a
b cdef
g h
i jklm
n
o
p qrst
u v
w xyz.
.
Wo die .s Leerzeichen für Sichtbarkeit ersetzen.
Dann wird die Zeichenfolge zurückgelesen, wobei die ASCII-Feder nach unten um die Schleifen herum verläuft gund uzweimal auf und und trifft :
1| a <-3
V b cdef
g h
4| i jklm
V n 2->
...
... geben:
abgjklmhfedcginopuxyz vtsrquw (mit einem Leerzeichen)
Testfälle
(Zitate hinzugefügt, um nachgestellte Leerzeichen hervorzuheben - bitte in Bezug auf E / A ignorieren)
I: "abcdefghijklmnopqrstuvwxyz"
O: "abgjklmhfedcginopuxyz vtsrquw "
I: "!@#"
O: "!@ # "
I: ""
O: ""
I: "12345 67890"
O: "12690 7 54368 "
I: " "
O: " "
Beachten Sie, dass die Ausgangslänge immer ein Vielfaches von 15 ist, der Länge einer Federspule
Dies ist Code-Golf , daher gewinnt die kürzeste Antwort in Bytes.

Die Hauptschleife beginnt mit der Ausführung von rechts nach links und wird auf der rechten Seite des Spielfelds ausgeführt. Hier lesen wir das erste Zeichen aus stdin und beenden es, wenn es sich um eine EOF handelt.
Im nächsten Abschnitt wird sichergestellt, dass alle EOF-Zeichen mithilfe der Formel in Leerzeichen konvertiert werden
Eine Kopie des Zeichens wird im temporären Speicher gespeichert, und anschließend wird in der Tabelle in Zeile 4 (
) nach dem aktuellen Index gesucht, um festzustellen, ob das Zeichen ausgegeben werden soll oder nicht.
Wenn das Zeichen ausgegeben werden muss, nehmen wir den linken Zweig. Hier wird ein Swap durchgeführt, um den nächsten Swap aufzuheben, und dann wird eine Null gedrückt, um den Zweig nach rechts zu zwingen.
Wenn das Zeichen nicht ausgegeben wurde, tauschen wir es im Stapel unter dem Indexzähler aus (dies ist der Austausch, der im linken Zweig abgebrochen wird). In beiden Fällen speichern wir das Zeichen beim aktuellen Indexversatz im Speicher, erhöhen den Index und prüfen, ob er größer als 13 ist.
Wenn nicht, lesen wir das nächste Zeichen aus stdin und wiederholen die innere Schleife.
Wenn dies der Fall ist, haben wir einen Satz von 14 Zeichen fertiggestellt, von denen 7 ausgegeben wurden (