Introdução
Os cactos vêm em vários tamanhos, formas e cores diferentes. No entanto, o cacto mais emblemático e must-have em todos os ocidentais deve ser o saguaro . Características importantes são o tamanho e os braços, que definiram a aparência estereotipada dos cactos.
Sua tarefa é trazer o saguaro para o mundo ASCII. No entanto, - como no mundo real - nenhum saguaro é como outro, portanto, seu programa deve ser capaz de gerar saguaros com configurações de braço variáveis.
Um exemplo de saguaro
- Entrada:
[0b10, 0b11]
([2, 3]
em decimal, comprimento de entrada de2
)
_
/ \
_ | |
/ \ | |
| | | |
\ \_| |
\__ |
\ |
_ | | _
/ \ | | / \
| | | | | |
\ \_| |_/ /
\__ __/
\ /
| |
| |
Especificações
Um saguaro sempre tem uma base e um topo, com quantidades variáveis de caule no meio. As partes da haste não podem ter braços, um braço à direita, um à esquerda ou dois braços.
Os padrões de crescimento do Saguaro são fornecidos como uma lista de entrada contendo valores de dois bits. 00
significa sem braços, 01
um braço à direita, 10
um braço à esquerda e11
dois braços (todos em binário). O comprimento da lista de entrada determina a altura do saguaro.
As seções do Saguaro são parecidas com as seguintes. As partes dos cactos são cercadas por octothorps #
, para maior clareza que não deve ser impressa.
A altura de um saguaro é sempre igual a 4+6*k
caracteres para números inteiros não negativos 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
# | | #
#############
Entrada
Como dito anteriormente, a entrada consiste em uma lista de valores de dois bits ( 0, 1, 2, 3
em decimal). Pode ser fornecido em qualquer formato razoável. O primeiro elemento da lista corresponde à parte mais alta do tronco do saguaro, o segundo elemento à sua segunda parte mais alta do tronco, etc.
Se desejar, você pode exigir o comprimento da lista de entrada como uma entrada adicional. Por favor, especifique-o na sua resposta, se o fizer.
Saída
Seu saguaro ASCII de saída deve ser construído usando as peças exatas da haste, conforme descrito acima. Os espaços à direita em uma linha e novas linhas à direita são ignorados; você pode imprimir mais, menos ou tantos quantos os especificados acima.
Regras
- Aplicam-se brechas padrão
- Sendo código-golfe , a contagem de bytes de um programa deve ser mínima
Casos de teste
- Um outlier. Entrada:
[0b01, 0b00, 0b01, 0b11]
_
/ \
| | _
| | / \
| | | |
| |_/ /
| __/
| /
| |
| |
| |
| |
| |
| |
| | _
| | / \
| | | |
| |_/ /
| __/
| /
_ | | _
/ \ | | / \
| | | | | |
\ \_| |_/ /
\__ __/
\ /
| |
| |
- Braços alternados. Entrada:
[0b10, 0b01, 0b10]
_
/ \
_ | |
/ \ | |
| | | |
\ \_| |
\__ |
\ |
| | _
| | / \
| | | |
| |_/ /
| __/
| /
_ | |
/ \ | |
| | | |
\ \_| |
\__ |
\ |
| |
| |
- Uma abundância de armas. Entrada:
[0b11, 0b11]
_
/ \
_ | | _
/ \ | | / \
| | | | | |
\ \_| |_/ /
\__ __/
\ /
_ | | _
/ \ | | / \
| | | | | |
\ \_| |_/ /
\__ __/
\ /
| |
| |
- Sem armas, também conhecida como lança. Entrada:
[0b00]
_
/ \
| |
| |
| |
| |
| |
| |
| |
| |
- Nenhum corpo, alguns chamam de um cacto jovem. Entrada:
[]
_
/ \
| |
| |
4 1 0 1 3
)