Für die Zwecke dieser Frage ist eine mäanderförmige Kurve eine Kurve, die der allgemeinen Richtung von links nach rechts folgt, jedoch wiederholt n + 1 Umdrehungen um 90 Grad nach links und dann n + 1 Umdrehungen nach rechts durchführt (für n> 0).
Tatsächlich wird der Mäander selbst n
Segmente haben.
Die Windungen sind mit gekennzeichnet +
.
Die Breite der Mäander (der Abstand zwischen zwei Mäandern +
) beträgt 3 am Horizont ( ---
) und 1 in der Vertikalen ().|
).
Hier sind die einzelnen Segmente eine mäanderförmige Kurve mit den Größen n von 1 bis 5:
+-------------------+
| |
+---------------+ | +-----------+ |
| | | | | |
+-----------+ | +-------+ | | | +---+ | |
| | | | | | | | | | | |
+-------+ | +---+ | | +---+ | | | +---+ | | |
| | | | | | | | | | | | | |
+---+ +---+ | +---+ | | +-------+ | | +-----------+ | |
| | 1 | | 2 | | 3 | | 4 | | 5
---+ +-------+ +-----------+ +---------------+ +-------------------+ +
Herausforderung:
Zeichnen Sie bei zwei positiven Zahlen n
und Segmenten einer mäanderförmigen Kurve mit der Größem
m
n
. Sie können ein vollständiges Programm oder eine Funktion schreiben.
Eingang:
n
> 0 Die Größe der Kurve
m
> 0 Anzahl der zu zeichnenden Segmente
Ausgabe:
Eine ASCII-Darstellung der Mäanderkurve.
Beispiele:
n = 3
m = 2
+-----------+ +-----------+
| | | |
| +---+ | | +---+ |
| | | | | | | |
+---+ | | +---+ | |
| | | |
-----------+ +-----------+ +
n = 2
m = 5
+-------+ +-------+ +-------+ +-------+ +-------+
| | | | | | | | | |
+---+ | +---+ | +---+ | +---+ | +---+ |
| | | | | | | | | |
-------+ +-------+ +-------+ +-------+ +-------+ +
n = 4
m = 4
+---------------+ +---------------+ +---------------+ +---------------+
| | | | | | | |
| +-------+ | | +-------+ | | +-------+ | | +-------+ |
| | | | | | | | | | | | | | | |
| +---+ | | | +---+ | | | +---+ | | | +---+ | |
| | | | | | | | | | | | | | | |
+-------+ | | +-------+ | | +-------+ | | +-------+ | |
| | | | | | | |
---------------+ +---------------+ +---------------+ +---------------+ +
Gewinnkriterien:
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes in jeder Sprache. Bitte erläutern Sie Ihren Code, wenn Sie Zeit dazu haben.
n
links abbiegen?n+1
bei der Betrachtung der Beispiele, vor allem zwischen den einzelnen Segmenten ..Antworten:
Holzkohle ,
523433 BytesProbieren Sie es online!Link ist eine ausführliche Version des Codes. Erläuterung:
Geben Sie die Größe des Mäanders ein.
Nach oben schwenken, da die Zeichnung rechts beginnt und links arbeitet.
Schleife über die gewünschte Anzahl von Mäandern.
Schlinge dich über die Segmente des Mäanders.
Drucken Sie a
+
.k
Wechseln Sie zwischen dem Verdoppeln und Vervierfachen der Längen, da die horizontalen Linien doppelt so lang sind. Verringern Sie jedoch das Ergebnis vor dem Drucken, um das zu berücksichtigen
+
gerade gedruckte .Für das nächste Segment entsprechend schwenken.
quelle
APL (Dyalog Classic) ,
10810195 BytesProbieren Sie es online!
quelle
Python 3 ,
371354346328298290 Bytes-20B Dank Ceilingcat
Probieren Sie es online!
Vor dem Golfen:
quelle
C (gcc) ,
559 540 523 511 494 484 476 468 456 447443 BytesProbieren Sie es online!
Etwas weniger golfen
quelle
Strich - POSIX-Shell-Skript, 528 Byte
Probieren Sie es online!
Golf gespielt:
ungolfed:
quelle
Python 2 , 261 Bytes
Probieren Sie es online!
5 Bytes von diesem Tipp von Esolanging Fruit .
quelle