(relacionado / inspirado por: Desenhe uma formação de boliche )
Um passatempo divertido nos meses de inverno aqui é jogar boliche de boneco de neve, usando uma bola grande (como uma bola de basquete) e pequenas figuras de boneco de neve. Vamos recriar isso em ASCII.
Cada boneco de neve consiste no seguinte:
(.,.)
( : )
Aqui está o alinhamento dos dez "pinos" do boneco de neve
(.,.) (.,.) (.,.) (.,.)
( : ) ( : ) ( : ) ( : )
(.,.) (.,.) (.,.)
( : ) ( : ) ( : )
(.,.) (.,.)
( : ) ( : )
(.,.)
( : )
Estes "pins" são rotulados a partir 1
de 10
como
7 8 9 10
4 5 6
2 3
1
Até agora, tão padrão. No entanto, ao contrário do boliche normal, os pinos do boneco de neve são apenas achatados e não totalmente removidos. Isso é feito por alguém que precisa achatar manualmente a neve dos pinos atingidos. Um boneco de neve achatado é representado por _____
(cinco sublinhados), com espaço em branco acima. Aqui está um exemplo com os 1 3 5 6 9 10
pinos achatados (o que significa que apenas os 2 4 7 8
pinos permanecem):
(.,.) (.,.)
( : ) ( : ) _____ _____
(.,.)
( : ) _____ _____
(.,.)
( : ) _____
_____
Entrada
- Uma lista de números inteiros de
1
para10
em qualquer formato conveniente representando quais pinos foram atingidos e, portanto, precisam ser achatados. - Cada número aparecerá apenas no máximo uma vez, e os números podem estar em qualquer ordem (ordenada, não ordenada, ordenada descendente) - sua escolha, independentemente do que torne seu código mais eficiente.
- A entrada é garantida para ter pelo menos um número inteiro.
Saída
A representação artística ASCII resultante dos pinos do boneco de neve, com os pinos corretos achatados.
Regras
- Novas linhas à esquerda ou à direita ou espaços em branco são opcionais, desde que os próprios caracteres estejam alinhados corretamente.
- Um programa completo ou uma função são aceitáveis. Se uma função, você pode retornar a saída em vez de imprimi-la.
- Se possível, inclua um link para um ambiente de teste on-line para que as pessoas possam experimentar seu código!
- As brechas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.
Exemplos
1 3 5 6 9 10
(.,.) (.,.)
( : ) ( : ) _____ _____
(.,.)
( : ) _____ _____
(.,.)
( : ) _____
_____
1 2 3
(.,.) (.,.) (.,.) (.,.)
( : ) ( : ) ( : ) ( : )
(.,.) (.,.) (.,.)
( : ) ( : ) ( : )
_____ _____
_____
1 2 3 4 5 6 8 9 10
(.,.)
( : ) _____ _____ _____
_____ _____ _____
_____ _____
_____
fonte
Respostas:
05AB1E ,
4544 bytesExperimente online!
Explicação
fonte
Boneco de neve 1.0.2 , 157 bytes
Experimente online!
Quando vi esse desafio, sabia que tinha que responder na linguagem perfeita ...
Essa é uma sub-rotina que recebe a entrada como uma matriz de números e as saídas como uma string através do permavar atual.
Embrulhado para "legibilidade" / estética:
Versão levemente ungolfed / comentada:
fonte
empilhados , não-concorrentes, 118 bytes
Eu adicionei
deepmap
e algumas outras coisas após esse desafio, junto com toneladas de correções. Experimente aqui!Ungolfed
Saída:
fonte
Python 2,
248243241226224223221210206200177 bytes-5 com agradecimentos a @Rod
-15 novamente graças a Rod
-1 usando o cálculo de espaço novamente da Rod
Parece mais devido a mais linhas e recuos, mas surpreendentemente 11 bytes mais curto.
Tenho certeza que isso vai ficar abaixo de 200 ...
Eu estava certo, mas não sem 23 bytes de dicas sérias do @ Pietu1998. Muito Obrigado!
Experimente online!
Recebe a entrada como uma lista de números inteiros. Muito grande em 248, mas funciona.
fonte
C #
233221213203 bytesO método utiliza uma matriz int a como a lista de pinos caídos
embrulhado
expandido
derrubou alguns bytes por sugestões nos comentários de Ghost, raznagul e auhmaan.
fonte
new[]{7,4,2,1}.Contains(i--)
parai<9&&i%3==1||i==2
i==7||i<5&&i!=3
i==7|i<5&i--!=3
var o="";var x=...
porstring o="",x=""...
.Lote, 262 bytes
Nota: As linhas 2, 3 e 4 terminam em um espaço e também produz um espaço à direita em cada linha. Estes podem ser removidos a um custo de 5 bytes. Funciona criando as variáveis s1 ... s10 como as metades inferiores dos bonecos de neve, achatando as fornecidas como argumentos da linha de comando. As linhas apropriadas são impressas duas vezes, pela primeira vez com as metades inferiores substituídas pelas metades superiores. Isso economiza 18 bytes usando dois conjuntos de variáveis da metade superior e inferior.
fonte
JavaScript,
154149 bytesfonte
Pitão, 63 bytes
Um programa que recebe a entrada de uma lista de números inteiros e imprime o resultado.
Suíte de teste
[Explicação que vem depois]
fonte
Pitão, 51 bytes
O código contém alguns imprimíveis, então aqui está um
xxd
hexdump.Experimente online.
Sem imprimíveis, 52 bytes
Experimente online.
fonte
Javascript
178169 bytesEssencialmente uma porta da minha resposta c #.
Toma uma matriz int como a lista de "pinos" achatados;
Embrulhado:
Expandido e explicado:
fonte