Einführung
Kakteen gibt es in verschiedenen Größen, Formen und Farben. Allerdings muss der Saguaro der kultigste Kaktus und das Must-Have in jedem Western sein . Wichtige Merkmale sind seine Größe und seine Arme, die das stereotype Erscheinungsbild der Kakteen bestimmt haben.
Ihre Aufgabe ist es, den Saguaro in die ASCII-Welt zu bringen. Wie in der realen Welt gleicht jedoch kein Saguaro einem anderen. Daher muss Ihr Programm in der Lage sein, Saguaros mit unterschiedlichen Armkonfigurationen zu generieren.
Ein Beispiel Saguaro
- Eingabe:
[0b10, 0b11]
([2, 3]
in Dezimalzahl, Eingabelänge von2
)
_
/ \
_ | |
/ \ | |
| | | |
\ \_| |
\__ |
\ |
_ | | _
/ \ | | / \
| | | | | |
\ \_| |_/ /
\__ __/
\ /
| |
| |
Spezifikationen
Ein Saguaro hat immer eine Basis und eine Spitze mit variablen Mengen an Stiel dazwischen. Die Stielteile können keine Arme, einen Arm rechts, einen links oder zwei Arme haben.
Saguaro-Wachstumsmuster werden als Eingabeliste mit Zwei-Bit-Werten angegeben. 00
bedeutet keine Arme, 01
einen Arm rechts, 10
einen Arm links und 11
zwei Arme (alle in binärer Form). Die Länge der Eingabeliste bestimmt die Höhe des Saguaros.
Saguaro-Abschnitte sehen wie folgt aus. Kaktus-Teile sind aus Gründen der #
Klarheit von Oktothorpen umgeben, die nicht gedruckt werden sollen.
Die Höhe eines Saguars entspricht immer den 4+6*k
Zeichen für nicht negative Ganzzahlen k
.
#############
# _ # Saguaro top
# / \ #
#############
# _ | | _ # Stem, both arms
#/ \ | | / \# Stem id: 11
#| | | | | |#
#\ \_| |_/ /#
# \__ __/ #
# \ / #
#############
# _ | | # Stem, left arm
#/ \ | | # Stem id: 10
#| | | | #
#\ \_| | #
# \__ | #
# \ | #
#############
# | | _ # Stem, right arm
# | | / \# Stem id: 01
# | | | |#
# | |_/ /#
# | __/ #
# | / #
#############
# | | # Stem, no arms
# | | # Stem id: 00
# | | #
# | | #
# | | #
# | | #
#############
# | | # Saguaro base
# | | #
#############
Eingang
Wie bereits erwähnt, besteht die Eingabe aus einer Liste von Zwei-Bit-Werten ( 0, 1, 2, 3
in Dezimalform). Es kann in jedem vernünftigen Format angegeben werden. Das erste Element der Liste entspricht dem höchsten Stammteil des Saguaros, das zweite Element dem zweithöchsten Stammteil usw.
Wenn Sie möchten, können Sie die Länge der Eingabeliste als zusätzliche Eingabe benötigen. Bitte geben Sie dies in Ihrer Antwort an.
Ausgabe
Ihr Ausgabe-ASCII-Saguaro sollte aus den exakten Stielteilen wie oben beschrieben erstellt werden. Nachgestellte Leerzeichen in einer Zeile und nachgestellte neue Zeilen werden ignoriert. Sie können mehr, weniger oder so viele wie oben angegeben drucken.
Regeln
- Standard Lücken gelten
- Da es sich um Code-Golf handelt , sollte die Byte-Anzahl eines Programms minimal sein
Testfälle
- Ein Ausreißer. Eingang:
[0b01, 0b00, 0b01, 0b11]
_
/ \
| | _
| | / \
| | | |
| |_/ /
| __/
| /
| |
| |
| |
| |
| |
| |
| | _
| | / \
| | | |
| |_/ /
| __/
| /
_ | | _
/ \ | | / \
| | | | | |
\ \_| |_/ /
\__ __/
\ /
| |
| |
- Wechselnde Arme. Eingang:
[0b10, 0b01, 0b10]
_
/ \
_ | |
/ \ | |
| | | |
\ \_| |
\__ |
\ |
| | _
| | / \
| | | |
| |_/ /
| __/
| /
_ | |
/ \ | |
| | | |
\ \_| |
\__ |
\ |
| |
| |
- Eine Fülle von Waffen. Eingang:
[0b11, 0b11]
_
/ \
_ | | _
/ \ | | / \
| | | | | |
\ \_| |_/ /
\__ __/
\ /
_ | | _
/ \ | | / \
| | | | | |
\ \_| |_/ /
\__ __/
\ /
| |
| |
- Keine Waffen, auch als Speer bekannt. Eingang:
[0b00]
_
/ \
| |
| |
| |
| |
| |
| |
| |
| |
- Kein Körper, manche nennen es einen jungen Kaktus. Eingang:
[]
_
/ \
| |
| |
4 1 0 1 3
)