Neste desafio, você deve exibir a arte ASCII de um balão de água, dada a quantidade de água que o balão está cheio:
| __||__ |
| / # #\ |
| |######| |
| |######| |
| |######| |
| |######| |
| |######| |
| \######/ |
| |
| |
+----------+
Como desenhar o balão
Para exibir um balão de tamanho n
, siga as etapas a seguir (observe: sempre que o símbolo de divisão ( /
) for usado, ele representa uma divisão inteira, arredondando para baixo):
Desenhe um recipiente que consiste em dez barras verticais (
|
) à esquerda e direita, dez traços (-
) na parte inferior e um sinal de adição (+
) no canto inferior esquerdo e inferior direito. Isso torna a coisa toda 12x11 e o "interior" 10x10.| | | | | | | | | | | | | | | | | | | | +----------+
Desenhe duas barras verticais (a abertura do balão) centralizadas no meio da linha superior, com
n/2
sublinhados (_
) em ambos os lados (neste exemplo,n
será 5):| __||__ | | | | | | | | | | | | | | | | | | | +----------+
Desenhe uma barra (
/
) e uma barra invertida (\
) ao redor desta linha superior, uma linha abaixo:| __||__ | | / \ | | | | | | | | | | | | | | | | | +----------+
Desenhe
n
linhas de barras verticais espaçadas de forma idêntica e, em seguida, uma linha de um par de barra invertida (ainda espaçada de forma idêntica) e barra:| __||__ | | / \ | | | | | | | | | | | | | | | | | | | | | | \ / | | | | | +----------+
"Encha" o balão com água, representada por um sinal de hash (
#
). Comece na linha mais baixa e trabalhe para cima. Se uma linha não estiver totalmente preenchida, você pode colocar as marcas de hash onde quiser (no exemplo abaixo, elas são colocadas aleatoriamente, mas você pode colocá-las, digamos, todas no lado esquerdo, se quiser).| __||__ | | / # #\ | | |######| | | |######| | | |######| | | |######| | | |######| | | \######/ | | | | | +----------+
O máximo n
é 7 e o mínimo é 0.
Entrada
A entrada será um número inteiro i
, que é a quantidade de marcas de hash (água) que deve ser desenhada.
Nunca será menor que 2 ou maior que 100.
Resultado
A saída deve ser um balão de tamanho n
contendo i
marcas de hash (unidades de água), onde n
é o menor tamanho possível que pode conter i
unidades de água. Como i
sempre será 2 ou maior, n
sempre será 0 ou maior.
O tamanho máximo possível em que um balão pode ser desenhado é n
= 7. Se um balão do tamanho 7 não puder caber na quantidade de água especificada, o balão será exibido:
| |
| |
|## # ###|
|##########|
|##########|
|##########|
|##########|
|##########|
|##########|
|##########|
+----------+
(A i
descrição acima deve ser a saída para entrada = 76. Assim como o balão não estourado, as seis unidades extras de água na linha superior podem ser organizadas da maneira que você preferir.)
Casos de teste
Por que ter um caso de teste, quando você pode ter todos eles?
Aqui está um GIF animado de todas as entradas i
de 2 a 100:
Pontuação
Isso é código-golfe , então o código mais curto em bytes vence.
Respostas:
Oitava, 523 bytes
23 desses bytes são apenas para o caso n = 100. Talvez alguém possa sugerir uma maneira mais eficiente ...
Teste
Entrada: 21
Resultado:
fonte
Python 2, 591 bytes
Levou algum tempo e provavelmente poderia ser jogado muito mais.
Espero que não haja erros graves.
Exemplo de execução:
dá:
fonte