É a época do ano em que muitos de nós recebem nossos calendários do advento ! Se você não estiver familiarizado com um calendário de adventos, estes são calendários especiais usados para contar o advento antecipando o Natal. Na minha experiência, as portas são colocadas aleatoriamente, e parte da diversão quando criança era trabalhar onde a porta de amanhã estava! Atualmente, os calendários têm chocolates atrás de cada porta, mas em vez de comprar um calendário do advento este ano, você deve criar um ASCII!
Tarefa
Dada a entrada de um número inteiro ( n
) no intervalo 0
- 24
, produza um calendário de advento ASCII com as portas numeradas abertas n
, abertas. Você deve usar a mesma ordem como no exemplo a seguir: 2
, 17
, 8
, 12
, 1
, 6
, 11
, 20
, 5
, 22
, 3
, 10
, 15
, 23
, 7
, 16
, 9
, 24
, 18
, 4
, 13
, 19
, 21
, 14
.
Portas
A porta fechada deve ser:
.-----------.
| |
| |
| |
| nn |
|___________|
onde n
representa o número da porta (zeros à esquerda são opcionais) e a porta aberta é:
.-----------.
|\ |
| | |
| | |
| | |
| |_________|
\|
exceto a porta 24, que é:
.--------------------------.
| |
| |
| |
| 24 |
|__________________________|
.--------------------------.
|\ |
| | |
| | |
| | |
| |________________________|
\|
Essas portas estão dispostas em um quadro de 37 linhas de 79 caracteres, com dois espaços entre cada coluna e uma linha vazia entre cada linha.
Portas abertas
Quando as portas são abertas, você deve exibir uma das (abaixo de tudo, desculpas pelas minhas terríveis habilidades artísticas!) Abaixo da porta:
. _ . _'_ + .^o _(")_ _n_ $ .
}\O/{ ) (^.^_ /~\ (';') (_ . _) (") |,| __/ \__
}/*\{ \./v`v' /~*~\ {\|+|/} / : \ >( o )< | | `. .'
/***\ oO8 /~*~~*\ d-b (_/ \_) ( o ) ._|_|_. /.^.\
.\^/. ____ __.==,_ .*. _ _ . . . _______ _ _
<->o<-> /_%_/| --|XX|- /.\ (O X O) .i_i_i. _j_j_j_ ( `v' )
'/v\` |_|_| | _| | |_-_| / ^ \ |-~~-~| ||__| \ /
|_|_|/ (____' (.-o-.) \/ \/ |_____| _|/$$|_ V
i |~| //'`\ |=| _{/ _{/ , * \ ==== b
.'%'. | | //....\ / \ \_/ + . + \\\|+-| .'''.
|^~~.~| Y ||()()| |(%)| /O \ . ' . \\\\\+| {*=*=*}
_'._.'_ _|_ ||_[]_| |___| @__,/\\ ~~~~~~~ \\\\\\\ '._.'
_ | _ | .W. .W. .&%$+*. \O/ .;' ..,.;.. ('v')
.'.'O | ($) | |*| |*| */'"'\& [ ]|_. .m_. |\\|//| // \\
/___\ | " o| |*| |*| $\._./% |_____) C| | \\|// |\ /|
(_____) | === | 'M' 'M' '%&*+$' ------' |__| _=|=_ Y Y
\ / .==. .-. -._.- __/\__ ... .-.
._o_O_. .--' | \| |/ .+. \_\/_/ '* ` //`);
|/\/\/| \_____/ /| |\ ( W ) /_/\_\ |_/\*_| %%
""""""" `=====' '-' `"` \/ [_____] //
Cada imagem tem 7 caracteres e cobre 4 linhas para que caibam nas janelas. Você pode escolher qualquer uma das imagens acima e usá-las em qualquer ordem, mas não pode repetir uma imagem. Para o dia 24, você também deve adicionar uma mensagem:
~
~ MERRY ~
~ CHRISTMAS! ~
~~~~~
que se encaixa ao lado de uma das figuras acima, você pode escolher se o texto está à direita ou à esquerda da imagem.
Exemplos
Dada a entrada 0
, produza o calendário sem portas abertas:
.-----------------------------------------------------------------------------.
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 2 | | 17 | | 8 | | 12 | | 1 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 6 | | 11 | | 20 | | 5 | | 22 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 3 | | 10 | | 15 | | 23 | | 7 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
| .-----------. .-----------. .--------------------------. .-----------. |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | 16 | | 9 | | 24 | | 18 | |
| |___________| |___________| |__________________________| |___________| |
| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 4 | | 13 | | 19 | | 21 | | 14 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
|_____________________________________________________________________________|
Para entrada 5
, produza algo semelhante a:
.-----------------------------------------------------------------------------.
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ . _ . | | | | | | | |\ __.==,_ | |
| | | }\O/{ | | | | | | | | | --|XX|- | |
| | | }/*\{ | | | | | | | | | _| | | |
| | | /***\ | | 17 | | 8 | | 12 | | | (____' | |
| | |_________| |___________| |___________| |___________| | |_________| |
| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | |\ _{/ _{/ | | | |
| | | | | | | | | \_/ | | | |
| | | | | | | | | /O \ | | | |
| | 6 | | 11 | | 20 | | | @__,/\\ | | 22 | |
| |___________| |___________| |___________| | |_________| |___________| |
| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _n_ | | | | | | | | | |
| | | (") | | | | | | | | | |
| | | >( o )< | | | | | | | | | |
| | | ( o ) | | 10 | | 15 | | 23 | | 7 | |
| | |_________| |___________| |___________| |___________| |___________| |
| \| |
| .-----------. .-----------. .--------------------------. .-----------. |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | 16 | | 9 | | 24 | | 18 | |
| |___________| |___________| |__________________________| |___________| |
| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ + | | | | | | | | | |
| | | /~\ | | | | | | | | | |
| | | /~*~\ | | | | | | | | | |
| | | /~*~~*\ | | 13 | | 19 | | 21 | | 14 | |
| | |_________| |___________| |___________| |___________| |___________| |
| \| |
|_____________________________________________________________________________|
Para entrada 14
:
.-----------------------------------------------------------------------------.
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ . _ . | | | |\ . | |\ ____ | |\ __.==,_ | |
| | | }\O/{ | | | | | __/ \__ | | | /_%_/| | | | --|XX|- | |
| | | }/*\{ | | | | | `. .' | | | |_|_| | | | | _| | | |
| | | /***\ | | 17 | | | /.^.\ | | | |_|_|/ | | | (____' | |
| | |_________| |___________| | |_________| | |_________| | |_________| |
| \| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _ | |\ $ | | | |\ _{/ _{/ | | | |
| | | .'.'O | | | |,| | | | | | \_/ | | | |
| | | /___\ | | | | | | | | | | /O \ | | | |
| | | (_____) | | | ._|_|_. | | 20 | | | @__,/\\ | | 22 | |
| | |_________| | |_________| |___________| | |_________| |___________| |
| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _n_ | |\ _(")_ | | | | | |\ |=| | |
| | | (") | | | (_ . _) | | | | | | | / \ | |
| | | >( o )< | | | / : \ | | | | | | | |(%)| | |
| | | ( o ) | | | (_/ \_) | | 15 | | 23 | | | |___| | |
| | |_________| | |_________| |___________| |___________| | |_________| |
| \| \| \| |
| .-----------. .-----------. .--------------------------. .-----------. |
| | | |\ \ ==== | | | | | |
| | | | | \\\|--| | | | | | |
| | | | | \\\\\-| | | | | | |
| | 16 | | | \\\\\\\ | | 24 | | 18 | |
| |___________| | |_________| |__________________________| |___________| |
| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ + | |\ , * | | | | | |\ i | |
| | | /~\ | | | + . + | | | | | | | .'%'. | |
| | | /~*~\ | | | . ' . | | | | | | | |^~~.~| | |
| | | /~*~~*\ | | | ~~~~~~~ | | 19 | | 21 | | | _'._.'_ | |
| | |_________| | |_________| |___________| |___________| | |_________| |
| \| \| \| |
|_____________________________________________________________________________|
Para entrada 24
:
.-----------------------------------------------------------------------------.
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ . _ . | |\ //''\ | |\ . | |\ ____ | |\ __.==,_ | |
| | | }\O/{ | | | //....\ | | | __/ \__ | | | /_%_/| | | | --|XX|- | |
| | | }/*\{ | | | ||()()| | | | `. .' | | | |_|_| | | | | _| | | |
| | | /***\ | | | ||_[]_| | | | /.^.\ | | | |_|_|/ | | | (____' | |
| | |_________| | |_________| | |_________| | |_________| | |_________| |
| \| \| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _ | |\ $ | |\ |~| | |\ _{/ _{/ | |\ . . . | |
| | | .'.'O | | | |,| | | | | | | | | \_/ | | | .i_i_i. | |
| | | /___\ | | | | | | | | Y | | | /O \ | | | |-~~-~| | |
| | | (_____) | | | ._|_|_. | | | _|_ | | | @__,/\\ | | | |_____| | |
| | |_________| | |_________| | |_________| | |_________| | |_________| |
| \| \| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _n_ | |\ _(")_ | |\ | _ | | |\ .W. .W. | |\ |=| | |
| | | (") | | | (_ . _) | | | | ($) | | | | |*| |*| | | | / \ | |
| | | >( o )< | | | / : \ | | | | " o| | | | |*| |*| | | | |(%)| | |
| | | ( o ) | | | (_/ \_) | | | | === | | | | 'M' 'M' | | | |___| | |
| | |_________| | |_________| | |_________| | |_________| | |_________| |
| \| \| \| \| \| |
| .-----------. .-----------. .-------------------------- .-----------. |
| |\ _ _ | |\ \ ==== | |\ .&%$+*. ~ | |\ \O/ | |
| | | (O X O) | | | \\\|--| | | | */'"'\& ~ MERRY ~ | | | [ ]|_. | |
| | | / ^ \ | | | \\\\\-| | | | $\._./% ~ CHRISTMAS! ~ | | | |_____) | |
| | | \/ \/ | | | \\\\\\\ | | | '%&*+$' ~~~~~ | | | ------' | |
| | |_________| | |_________| | |________________________| | |_________| |
| \| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ + | |\ , * | |\ | | |\ .*. | |\ i | |
| | | /~\ | | | + . + | | | .'''. | | | /.\ | | | .'%'. | |
| | | /~*~\ | | | . ' . | | | {*=*=*} | | | |_-_| | | | |^~~.~| | |
| | | /~*~~*\ | | | ~~~~~~~ | | | '._.' | | | (.-o-.) | | | _'._.'_ | |
| | |_________| | |_________| | |_________| | |_________| | |_________| |
| \| \| \| \| \| |
|_____________________________________________________________________________|
Regras
Isso é código-golfe, e o código mais curto em bytes, em cada idioma, vence.
- Qualquer formato razoável pode ser usado para E / S, assumindo que seja consistente.
- Qualquer quantidade de espaço em branco antes e depois do calendário é boa, assim como espaços / não imprimíveis adicionais no final de cada linha, mas nada antes de cada linha, pois isso deve caber em 80 caracteres.
- Todas as brechas padrão são proibidas.
obrigado
James Holderness por contribuir com imagens ASCII!
Respostas:
Carvão vegetal ,
676639614607598909044856bytesExperimente online!
Aqui você tem a versão detalhada do código , bastante compreensível. Minha abordagem é o oposto da @ Neil's. Ele desenha todos os presentes e depois cobre os que não são necessários. Eu só desenho os presentes necessários.
fonte
Print(Map(Map(4,Add(Times(Modulo(i,8),7),Times(56,Add(k,Times(4,IntDivide(i,8)))))),Slice("
... em",k,Add(k,7))));
vez dofor (4)
loop.l
opção ...Carvão , 666 bytes
Experimente online! Link é a versão detalhada do código. Não é realmente um jogador de golfe, mas não tenho certeza se quero ...
Experimente online! Link é a versão detalhada do código. Esta é uma versão que extrai os presentes separadamente para
577541530 bytes depois que eu roubei várias idéias do @Charlie para jogar mais alguns bytes de golfe.fonte
Python 2 ,
132213191287126510611059105610321030 bytesExperimente online!
-4 bytes graças ao Mr.Xcoder
-24 bytes graças a Lynn
Versão compactada (graças a Lynn e ovs):
Python 2 ,
102110171013 bytesExperimente online!
fonte
Befunge,
122011981186 bytesExperimente online!
Pode ainda ser possível jogar mais longe compactando as imagens, mas isso provavelmente exigiria o uso de caracteres ASCII estendidos que atualmente não são suportados no TIO.
fonte
Python 3 + numpy,
1164115911231103109710651061996994 bytesComprima todas as coisas e use numpy para uni-las.
Primeiro, construa as portas fechadas e substitua as portas que precisam ser abertas. Finalmente, produza tudo.
-22 bytes graças ao Sr. Xcoder .
-5 bytes graças a notjagan .
EDIT: <1000 bytes!
Experimente online!
fonte
C (gcc) ,
12961291121111661164 bytesEssa corda super longa, no entanto (59% da coisa toda!). Há ouro naquelas colinas; Eu posso sentir isso.
Edit: Se houver ouro, eu só encontrei manchas até agora.
Edit: -2 bytes graças ao ceilingcat
Experimente online!
Versão não ASCII
-30 bytes graças ao ceilingcat .
O GCC na minha máquina produz algo que trava imediatamente, tornando improvável que eu persiga esse garfo. (Sem mencionar que o TiO calcula 1120 bytes por algum motivo (o mesmo que a quantidade relatada de caracteres).).
Link Ideone
fonte
C (gcc) ,
279819761963...186217421703165116341632 bytes-2 bytes graças ao ceilingcat
Substituí alguns ícones para evitar caracteres ESC '\' desnecessários.
Experimente online!
fonte
Ruby , 966 bytes
Experimente online!
Mais jogado, mas mais difícil de ver as imagens no código.
Ruby , 974 bytes
Esta é uma função, a ser atribuída a uma variável como
f
e chamada comof[n]
. Imprime em stdout.Acabou por mais tempo do que o esperado. Penso que existem mais alguns bytes para extrair, apresentando os dados da imagem de forma diferente, que tentarei mais tarde.
Uso imagens simétricas ou quase simétricas e apenas a metade à direita é encontrada no código. A metade esquerda pode ter até 5 substituições de caracteres em comparação à direita. O código para fazer as substituições é bastante longo, o que nega parcialmente a compactação. Apenas cerca de 60 bytes são salvos.
Experimente online!
fonte
Clojure , 1530
Experimente
A solução clojure provavelmente poderia ser um pouco menor, mas aqui está minha primeira tentativa.
fonte