Erzeugen Sie bei einer ungeraden ganzen Zahl N (5 <= N <= 51) ein Labyrinth mit der Seitenlänge N , das den folgenden Anforderungen entspricht:
Das Labyrinth muss aus den Zeichen
|
-
und bestehen +
. Der |
Charakter muss als vertikale Wand, der -
Charakter als horizontale Wand +
verwendet werden. Wenn sich diese Wand dreht, sollte der Charakter verwendet werden.
Die Breite des Pfades muss ein Zeichen sein.
Das Labyrinth muss sich mindestens viermal drehen.
Das Labyrinth muss Außenwände haben, die an zwei Stellen brechen: am Anfang und am Ende.
Das Labyrinth muss von Anfang bis Ende aus einem einzigen, nicht brechenden Pfad bestehen.
Das folgende Beispiel ist ein gültiges Labyrinth: ( N = 5)
+---+
| |
| | |
|
--+--
Und für N = 7:
--+---+
| |
| | | |
| | | |
| | | |
| |
+---+--
Denken Sie daran, das ist Code-Golf , also gewinnt der Code mit der geringsten Anzahl von Bytes.
Antworten:
Jelly ,
36 35 34 3332 BytesTryItOnline!
Bauen Sie ein Nachtflugzeug andersherum zu den Beispielen wie:
Wie?
(jedes Byte gespeicherten ziemlich nicht-triviale Änderungen beteiligt, die Versionsgeschichte sehen , ob Sie daran interessiert sind, obwohl ich gerade bemerkt , dass Verbindung 1 ist die gleiche Byteanzahl als konventionellere wiederholen und kommen:
_2⁶ẋ“ ||“|”j
)quelle
JavaScript (ES6), 86
92 116Fast eine Herausforderung der Kolmogorv-Komplexität ...Mit ein wenig Querdenken (inspiriert von der Antwort von @ Neil) kann es sehr viel kürzer sein. Einfach um 90 ° drehenPrüfung
quelle
Stapel, 216 Bytes
|
s sind umständlich in Batch , damit ichreflektiertesdie Beispiele stattdessen gedreht.quelle
PHP, 99 Bytes
Up-Down-Tore
PHP, 157 Bytes
links rechts Tore
@Titus Vielen Dank, dass Sie die Bytes minimiert haben
quelle
$p("",$c*($c-4),...)
anstelle vonstr_repeat(...,$c-4)
(-2)$p($n,$c-1," | ")
statt$p("\n ",$c-1," | ")
($c)%4
(-2),$g
aus dem Code entfernen (-1)$c=$argv[1]-1
anstelle von($c=$argv[1])-1
,<=$c
anstelle von<$c
und$c
anstelle von$c-1
(-3)JavaScript (ES6), 87 Byte
Eine rekursive Funktion. Gibt einige nachgestellte Leerzeichen aus.
Prüfung
Code-Snippet anzeigen
quelle
Ruby 72 oder 69 Bytes
Lambda-Funktion. Gibt wie gezeigt eine durch Zeilenumbrüche getrennte Zeichenfolge zurück. Löschen Sie * $ /, um ein Array von Zeichenfolgen zurückzugeben.
Zeichnet ein um 90 Grad gedrehtes Labyrinth aus den Beispielen. Für jede Zeile wird eine Formatzeichenfolge ausgewählt (z. B.
+%s |
für die erste Zeile (es gibt keine nullte Zeile) und diese mit dem Operator%s
durch eine entsprechende Anzahl von-
oder Leerzeichen ersetzt%
(entspricht sprintf, ist jedoch kürzer).quelle
Java 7, 228 Bytes
Verwendete eine ähnliche vertikale Ausgabe wie @JonathanAllans Gelee-Antwort .
Ungolfed & Testcode:
Probieren Sie es hier aus.
Ausgabe:
quelle
Given an odd integer N (5 <= N <= 51), generate a maze with side length N
. Sie haben anscheinend eine andere Ober- und Unterseite für Ihre ...Python 2, 89 Bytes
repl.it
Erstellt eine interne Wand,
x
wie'+---- |'
und einen internen Korridor,y
wie.'| |'
Erstellt dann eine Liste von
[x,y,x[::-1],y]
(x[::-1]
ist eine Umkehrung vonx
).Wiederholt dann diese Listenzeiten
n
(als einzelne Liste) mit*n
und schneidet sie bis zu den erstenn
Einträgen mit(...)[:n]
, zusammen Die Liste mit Zeilenumbrüchen, mit'\n'.join(...)
und druckt das Ergebnis.quelle
Schläger 187 Bytes
Verwenden des Anzeigemusters von @JonathanAllan
Ungolfed:
Testen:
Ausgabe:
quelle
GNU sed 140 Bytes
Beinhaltet +1 für -r
Probieren Sie es online!
Nimmt Eingaben unärgerlich auf ( siehe Konsens) ).
Grundsätzlich wird das Labyrinth der Größe 5 eingefügt und dann das zweite und dritte Zeichen jeder Zeile so oft wie nötig an den Anfang angehängt. Dann dupliziert die 3. Zeile (abwechselnd
|
und) so oft wie nötig.
Die einzige interessante Sache , die ich verwendet , ist die
m
Option auf Linie 6 , die erlaubt^
und$
jeweils (zusätzlich zu dem normalen Verhalten) , um die leere Zeichenkette nach einem Newline und die leere Zeichenkette , bevor eine neue Zeile zu entsprechen.quelle
T-SQL, 123/79 Bytes
Golf gespielt:
Ungolfed:
Wenn Sie schummeln und nur ein schmales Labyrinth bilden, kann das Skript auf 79 Bytes heruntergespielt werden:
Golf gespielt:
Ungolfed:
Geige für die lange Antwort
quelle
JavaScript (ES6), 96 Byte
Ich hatte gehofft, dass Rekursion der kürzeste Weg sein würde, und anscheinend ist es ...
quelle