Dado um único número inteiro, x
onde 0 <= x <= 91
uma pilha de garrafas de cerveja sai com tantas garrafas (e prateleiras) ausentes. Por uma questão de simplicidade, mostrarei apenas as 6 primeiras garrafas e o que seria para cada uma das primeiras entradas.
Aqui está a pilha de garrafas, cada número é a garrafa que você deve remover para essa entrada (indexada em 1):
Observe que estamos usando 91 em vez de 99, porque 99 resultaria em uma pilha instável de garrafas.
Exemplo
Com 0 garrafas faltando ( x=0
):
|=|
| |
| |
/ \
. .
|-----|
| |
|-----|
|_____|
=============
|=| |=|
| | | |
| | | |
/ \ / \
. . . .
|-----| |-----|
| | | |
|-----| |-----|
|_____| |_____|
=====================
|=| |=| |=|
| | | | | |
| | | | | |
/ \ / \ / \
. . . . . .
|-----| |-----| |-----|
| | | | | |
|-----| |-----| |-----|
|_____| |_____| |_____|
=============================
[THERE ARE MORE UNDER THIS]
Para obter a saída completa de 0, consulte aqui: https://pastebin.com/ZuXkuH6s
Com a 1
garrafa ausente ( x=1
):
|=| |=|
| | | |
| | | |
/ \ / \
. . . .
|-----| |-----|
| | | |
|-----| |-----|
|_____| |_____|
=====================
|=| |=| |=|
| | | | | |
| | | | | |
/ \ / \ / \
. . . . . .
|-----| |-----| |-----|
| | | | | |
|-----| |-----| |-----|
|_____| |_____| |_____|
=============================
[THERE ARE MORE UNDER THIS]
Mais uma vez, estas são as duas primeiras linhas daqui: https://pastebin.com/ZuXkuH6s (com 1 removido) ...
Com 2 garrafas faltando:
|=|
| |
| |
/ \
. .
|-----|
| |
|-----|
|_____|
=====================
|=| |=| |=|
| | | | | |
| | | | | |
/ \ / \ / \
. . . . . .
|-----| |-----| |-----|
| | | | | |
|-----| |-----| |-----|
|_____| |_____| |_____|
=============================
[THERE ARE MORE UNDER THIS]
[ENTRADAS ADICIONAIS REMOVIDAS]
Faltam 91 garrafas ( n = 91
):
:(
Você deve mostrar um rosto infeliz, porque está sem cerveja.
Regras
- Os frascos devem ser removidos da esquerda para a direita.
- As prateleiras são removidas quando nenhuma cerveja permanece no topo das prateleiras.
- Para uma entrada de 0, você está produzindo 91 garrafas empilhadas em um triângulo.
- A linha inferior tem 13 garrafas, a parte superior tem 1.
- 1 espaço entre cada garrafa em cada prateleira.
- As prateleiras devem ser inseridas entre cada linha de garrafas.
- Prateleiras podem usar
=
,-
ou#
como o personagem. - As prateleiras devem ser 3 mais largas (de cada lado) do que as garrafas que elas seguram.
- Prateleiras podem usar
- Isso é código-golfe , vitórias mais baixas na contagem de bytes.
Respostas:
Carvão ,
9991 bytesExperimente online! Link é a versão detalhada do código. Na verdade, a versão real tem apenas
8370 bytes:Explicação:
Preencha uma matriz que forneça informações sobre onde as prateleiras vão e quanto tempo elas são.
Imprima um rosto infeliz, embora isso seja imediatamente substituído pela primeira garrafa de cerveja (se houver).
Passe pelas restantes garrafas de cerveja.
Verifique se uma prateleira precisa ser desenhada.
Imprima a prateleira e posicione-a pronta para desenhar o próximo frasco acima dela.
Desenhe uma garrafa e posicione-a pronta para desenhar outra garrafa.
fonte
for
loop. Isso é umwhile
loop, então eu tenho que fazer algo mais manualmente.for
loop fosse o caminho a seguir o tempo todo ... 13 bytes salvos! (Bem, eu tenho um pouco de sorte com a facilidade de preencher minha matriz.)Python 3 ,
306299265253255252247244 bytesTentativa rápida, pode ser otimizada
Edit: -2 bytes graças a @MrXcoder
Editar: -32 bytes, pois não são necessários espaços à direita
Editar: -12 bytes combinando as duas funções
Edit: -5 bytes graças a @ musicman523
Editar: +7 bytes para remover a prateleira após a última linha
Editar: -3 bytes
Editar: -5 bytes devido a uma função lambda ser usada apenas uma vez no mapa
Edit: -3 bytes usando a função string
center
Experimente online!
fonte
d=
no cabeçalho, porém, uma vez que não é recursivo para -2 bytesE
variávelJavaScript (ES6),
251256 bytesEditar: salvou 2 bytes graças a @dzaima .
Edit: Adicionado 7 bytes para corrigir o problema com o parâmetro.
:(
Aqui está a versão (basicamente) não-destruída:
Código de teste
Mostrar snippet de código
fonte
r
"macro"; Eu senti que poderia haver um método mais curto, mas nada que eu tentei o derrubou.C (gcc) ,
360358 bytesExperimente online!
Explicação:
fonte
Python 2, 436 bytes
Caramba!!
Meu método é muito detalhado, mas de qualquer maneira: essencialmente "desenha" cada linha de garrafas, adiciona espaços e depois "apaga" o que for necessário, imprimindo o que resta.
Halvard Hummel é muito melhor.
fonte