introduzione
I cactus sono disponibili in varie dimensioni, forme e colori. Tuttavia, il cactus e il must-have più iconico in ogni occidentale deve essere il saguaro . Caratteristiche importanti sono le sue dimensioni e le braccia, che hanno definito l'aspetto stereotipato del cactus.
Il tuo compito è portare il saguaro nel mondo ASCII. Tuttavia, come nel mondo reale, nessun saguaro è come un altro, quindi il tuo programma deve essere in grado di generare saguari con diverse configurazioni del braccio.
Un esempio di saguaro
- Input:
[0b10, 0b11]([2, 3]in decimale, lunghezza input di2)
_
/ \
_ | |
/ \ | |
| | | |
\ \_| |
\__ |
\ |
_ | | _
/ \ | | / \
| | | | | |
\ \_| |_/ /
\__ __/
\ /
| |
| |
specificazioni
Un saguaro ha sempre una base e una cima, con quantità variabili di stelo in mezzo. Le parti dello stelo non possono avere braccia, un braccio a destra, uno a sinistra o due bracci.
I modelli di crescita del Saguaro sono indicati come un elenco di input contenente valori a due bit. 00significa niente braccia, 01un braccio a destra, 10un braccio a sinistra e 11due braccia (tutto in binario). La lunghezza dell'elenco di input determina l'altezza del saguaro.
Le sezioni del Saguaro sono le seguenti. Le parti di cactus sono circondate da ottotorpi #, per chiarezza che non devono essere stampate.
L'altezza di un saguaro è sempre uguale ai 4+6*kcaratteri per numeri interi non negativi 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
# | | #
#############
Ingresso
Come detto in precedenza, l'ingresso è costituito da un elenco di valori a due bit ( 0, 1, 2, 3in decimale). Può essere fornito in qualsiasi formato ragionevole. Il primo elemento dell'elenco corrisponde alla parte più alta dello stelo del saguaro, il secondo elemento alla sua seconda parte più alta dello stelo, ecc.
Se lo si desidera, è possibile richiedere la lunghezza dell'elenco di input come input aggiuntivo. Per favore specificalo nella tua risposta se lo fai.
Produzione
Il tuo saguaro ASCII di output dovrebbe essere costruito usando le parti esatte dello stelo come descritto sopra. Gli spazi finali su una linea e quelli nuovi vengono ignorati; è possibile stampare più, meno o quanti sono stati indicati sopra.
Regole
- Si applicano scappatoie standard
- Essendo code-golf , il conteggio dei byte di un programma dovrebbe essere minimo
Casi test
- Un outlier. Ingresso:
[0b01, 0b00, 0b01, 0b11]
_
/ \
| | _
| | / \
| | | |
| |_/ /
| __/
| /
| |
| |
| |
| |
| |
| |
| | _
| | / \
| | | |
| |_/ /
| __/
| /
_ | | _
/ \ | | / \
| | | | | |
\ \_| |_/ /
\__ __/
\ /
| |
| |
- Bracci alternati. Ingresso:
[0b10, 0b01, 0b10]
_
/ \
_ | |
/ \ | |
| | | |
\ \_| |
\__ |
\ |
| | _
| | / \
| | | |
| |_/ /
| __/
| /
_ | |
/ \ | |
| | | |
\ \_| |
\__ |
\ |
| |
| |
- Un'abbondanza di armi. Ingresso:
[0b11, 0b11]
_
/ \
_ | | _
/ \ | | / \
| | | | | |
\ \_| |_/ /
\__ __/
\ /
_ | | _
/ \ | | / \
| | | | | |
\ \_| |_/ /
\__ __/
\ /
| |
| |
- Nessuna arma, nota anche come lancia. Ingresso:
[0b00]
_
/ \
| |
| |
| |
| |
| |
| |
| |
| |
- Nessun corpo, alcuni lo chiamano un giovane cactus. Ingresso:
[]
_
/ \
| |
| |
4 1 0 1 3)