Der berühmte C64 Basic One Liner
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
druckt ein Labyrinth aus Schrägstrichen und Backslashes.
\\/\\\//\/\////\\/\/
\/\///\\///////\//\/
/\\\//\//\////\\//\\
\////\//\//\/\\\\\\/
/\/\\///\\\\/\\\\/\\
\/\//\\\\\\//\/\////
/\//\\///\/\///\////
\/\\\//\\/\\\//\\/\/
//////\\/\\/\/\/\///
\\/\/\\////\/\/\\/\/
Lies in einem solchen Labyrinth aus diagonalen Wänden aus Standard und drucke dasselbe Labyrinth mit horizontalen und vertikalen Wänden aus, die aus dem Wandzeichen "#" bestehen.
Zum Beispiel das kleine Labyrinth
/\\
\\/
///
wird übersetzt in
#####
# #
# # # #
# # # #
##### # # #
# #
#########
#####
Genauer gesagt hat jedes isolierte Wandsegment die Länge von fünf Zeichen, benachbarte Wandsegmente teilen sich eine Ecke. Das Verschieben eines Zeichens nach rechts / links / oben / unten in der Matrix aus Schrägstrichen und umgekehrten Schrägstrichen entspricht einer diagonalen Übersetzung um 2 Zeichen in vertikaler und 2 Zeichen in horizontaler Richtung in der # -Matrix.
Antworten:
Python 3,
226224 BytesMein erster Python Golf, also wohl sehr suboptimal. Es wird eine ganze Reihe von nachgestellten Leerzeichen erzeugt, aber es gibt keine vorangestellten Zeilenumbrüche und höchstens zwei vorangestellte Leerzeichen. Die Eingabe muss von Hand über die Befehlszeile erfolgen (vielleicht kennt jemand einen kürzeren Weg, um mehrzeilige Eingaben in Python zu erhalten ...).
Die Idee ist, ein großes Array von Leerzeichen zu initialisieren
r
, dann die Eingabe zu durchlaufen und die Leerzeichen#
nach Bedarf zu ersetzen und schließlich das gesamte Array zu drucken. Ein Trick, den ich verwendet habe, besteht darin, Zeichen zu vergleichen,z = '0'
anstatt die Gleichheit mit'/'
oder zu testen'\'
, wodurch eine Menge Bytes eingespart werden.quelle
Julia, 258 Bytes
Eine funktionale Lösung ...
In der Reihenfolge des Auftretens:
f
deckt '/' und '\' mit ihren 5 * 5-Bit-Mustern ab,h
faltet jede fünfte und folgende Zeile in eine einzelne Zeile ( siehe "benachbarte Wandsegmente teilen sich eine Ecke") undg
macht dasselbe für die Spalten. Zum Schlussi-j,i+j
dreht sich das Bild.quelle
JavaScript (ES6), 258
Eine Funktion mit dem Labyrinth als Parameter, die die Ausgabe zurückgibt.
Unsicher, ob es gültig ist, aufgrund der Eingabe- / Ausgaberegeln (es hat trotzdem Spaß gemacht)
quelle