Schreiben Sie ein Programm (oder eine Funktion), das eine nicht leere Zeichenfolge druckbarer ASCII- Zeichen enthält.
Gibt eine zickzackförmige Kette der Zeichen in der Zeichenfolge aus (oder zurück), wobei jedes benachbarte Zeichenpaar durch Folgendes verknüpft ist:
/
wenn das erste Zeichen vor dem zweiten Zeichen in normaler ASCII-Reihenfolge vorkommt. z.BB / A
\
wenn das erste Zeichen nach dem zweiten Zeichen in normaler ASCII-Reihenfolge vorkommt. z.BB \ A
-
wenn das erste und zweite Zeichen gleich sind. z.BA-A
So ist der Ausgang für Programming Puzzles & Code Golf
wäre
o
/ \
r z-z o e G l
/ \ / \ / \ / \ / \
P o r m-m n u l s & C d f
\ / \ / \ / \ / \ / \ / \ /
g a i g P e
\ /
Wenn die Eingabezeichenfolge nur ein Zeichen enthält, ist die Ausgabe nur dieses Zeichen.
Ihr Programm sollte behandeln ,
/
, \
, und -
genauso wie alle anderen Zeichen.
zB -\//-- \ //-
soll erzeugen:
\
/ \
- /-/
/ \
- --- \ /-/
\ / \ / \
-
\
Die Ausgabe sollte keine überflüssigen Zeilenumbrüche enthalten, mit Ausnahme eines einzelnen optionalen Zeilenumbruchs. (Beachten Sie, dass die leere Zeile im obigen Beispiel das letzte Leerzeichen in der Zeichenfolge enthält und daher nicht irrelevant ist.) In jeder Zeile und in jeder Anordnung dürfen Leerzeichen nachgestellt werden.
Der kürzeste Code in Bytes gewinnt.
Ein weiteres Beispiel - Eingabe:
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Ausgabe:
9 9 8 6 6
/ \ / \ / \ / \ / \
9 6 8 7 3 3 4 2 4 8 9 8-8
/ \ / \ / \ / \ / \ / \ / \
4 5 2 5 5 2 3-3 3 7 5 2 4 9 9 9-9 7
/ \ / \ / \ / \ / \ / \ / \ / \ / \
3 1 1 3 2 0 1 7 6 3 3 5 8 8 6
\ / \ / \ / \ / \ / \
. 1 1 5 2 9 9 3 7 1 4 6 8 9
\ / \ / \ / \ / \ / \ / \ / \ /
0 0 7 9 5 2 0 0 2 6 9-9 8 5 4 7
\ / \ / \ / \ / \ / \ / \ /
4 4-4 2 8 8 4 2 3 2 7 6
\ / \ / \ / \ /
0 6 8 3 1-1 0
\ / \ /
2 0
'\n'
durch eine Vorlage wie diesefor
Schleifen können viel zerquetscht werden. Verschwenden Sie nicht einen ganzen Block des erforderlichen Codes miti++
. Führen Sie stattdessen den größten Teil Ihresfor
Codes dort aus. Außerdem benötigen Sie keine geschweiften Klammern um einzelne Codezeilen.l
rechnens.length*2-1
und das zweimal tun. Warum nicht stattdessen diesen Wert speichern?<br>
ist einfach da drin, so dass es in der HTML-Version auftaucht. Wenn Sie genau hinsehen, verwende ich stattdessen eine Vorlagenzeichenfolge im eigentlichen Eintrag. Es ist auch keine Anforderung: "Drucken (oder zurückgeben) ..."Python, 393 Bytes
Rennen wie:
z("Zigzag")
quelle
JavaScript (ES6), 202
Template-Strings verwenden. Einrückungsräume und Zeilenumbrüche werden nicht gezählt, mit Ausnahme der letzten Zeilenumbrüche in Backticks, die signifikant und gezählt sind.
Üblicher Hinweis: Testen Sie die Ausführung des Snippets in jedem EcmaScript 6-kompatiblen Browser (insbesondere nicht in Chrome und nicht in MSIE. Ich habe es in Firefox getestet, Safari 9 könnte funktionieren).
quelle
CJam, 79 Bytes
Probieren Sie es online aus
Dadurch wird die Ausgabe spaltenweise erstellt und das Ergebnis am Ende transponiert, um die Ausgabe zeilenweise abzurufen. Das war insgesamt ziemlich schmerzhaft.
Erläuterung:
quelle
Perl 5,
230214Prüfung
quelle
K, 86
.
Ungolfed:
quelle
Rubin, 158
6 Bytes dank Histocrat gespart . Vielen Dank!
quelle
->s,*i{
. Und wenn Sie ersetzens[0]
mits[/./]
, ich glaube , Sie ersetzens[1..-1]
mit$'
.Python mit Numpy: 218 Bytes
Es lohnt sich, 19 Bytes für den Import von Numpy zu verschwenden.
Golf gespielt:
Ungolfed:
quelle