Erinnerst du dich an die lustigen Windräder, auf denen du bläst und die sich immer wieder drehen? Code eins!
Bei einem Windrad werden die Zeichen in \ | / _
der Mitte und auf den Armen angezeigt . Ein mögliches Windrad könnte so aussehen:
|
|
|_ ___
___|_|
|
|
|
Aber was ist ein Windrad, das sich nicht dreht? Kein Spaß! Wir können es drehen, indem wir die Symbole neu anordnen:
/
\ /
\ /
\/\
\/\
/ \
/ \
/
Die Herausforderung besteht darin, ein Programm zu erstellen, das drei Ganzzahlen benötigt und ein Windrad wie unten angegeben ausgibt. Das erste ist die Anzahl der Arme, die es hat, das zweite ist die Länge der Windradarme, und das dritte ist die Häufigkeit, mit der es eine Achtelumdrehung im Uhrzeigersinn dreht.
Sie können folgendes annehmen:
- Die Anzahl der Arme wird immer 0, 1, 2, 4 oder 8 sein.
- Alle Arme sind gleichmäßig voneinander beabstandet.
Die anfängliche Position des Windrads hat die Mitte wie folgt:
_ |_|
Wenn die Anzahl der Arme 1 ist, können Sie entscheiden, in welche Richtung der Arm zeigt.
- Wenn die Anzahl der Arme 2 beträgt, können Sie festlegen, dass die Arme vertikal oder horizontal zeigen.
Sie können ein vollständiges Programm schreiben, das Eingaben über STDIN oder ein Befehlszeilenargument oder eine Funktion, die Eingaben über Funktionsargumente erhält, akzeptiert. Ihr Programm muss eine Folge von Ausgaben anzeigen, die das Durchdrehen des Windrads anzeigt, wobei jede durch mindestens eine Leerzeile getrennt ist. Die Mitte des Windrads sollte sich nicht um mehr als eine Stelle bewegen. Sie können beliebig viele führende und nachfolgende Leerzeichen ausgeben.
Hier sind einige Beispiele:
0 2 1
_
|_|
/\
\/
1 3 2
|
|
|_
|_|
/
/
/
/\
\/
_ ___
|_|
2 2 0
_ __
__|_|
8 4 1
\ | /
\ | /
\ | /
\|_/____
____|_|
/ |\
/ | \
/ | \
/ | \
| /
\ | /
\ | /
\ |/
____\/\____
\/\
/| \
/ | \
/ | \
/ |
Dies ist Codegolf, also gewinnt der kürzeste Code. Viel Glück!
1 3 5
und wenn der Arm anfänglich nach oben zeigt), müssen Leerzeichen in früheren Ausgaben vorangestellt werden, um dies zu berücksichtigen.Antworten:
Python 2
535 517 473468 Bytes5 Bytes gespart dank @Easterly Ink!
Eingabe wird voraussichtlich durch Kommas getrennt (z. B. numArms, armLength, numRots)
Golf Version
Ungolfed Version
Erläuterung
Ziemlich einfach, wenn es kaputt ist. Stellen Sie zunächst fest, wie viel Raster erforderlich ist, und zeichnen Sie dann das Basisquadrat oder den Diamanten.
Die Startposition, das Symbol und die Richtung jedes Arms sind für jeden der 8 möglichen Arme für die Quadrat- und Diamantbasis fest codiert. Dann ist es einfach genug, sie zu zeichnen.
Um alles zu drehen, wechsle ich einfach zwischen der quadratischen und der diamantischen Basis, inkrementiere dann jeden der Arme und drehe sie einmal im Uhrzeigersinn.
quelle
' ' for
zu' 'for'
,] for
zu]for'
, 8 zu8for'
,print ''
zuprint''
.