¡Es esa época del año cuando muchos de nosotros tenemos nuestros calendarios de adviento ! Si no está familiarizado con un calendario de adviento, estos son calendarios especiales que se utilizan para contar el advenimiento antes de Navidad. En mi experiencia, las puertas se colocan al azar, y parte de la diversión de un niño era trabajar donde estaba la puerta de mañana. A menudo, en estos días, los calendarios tienen chocolates detrás de cada puerta, pero en lugar de comprar un calendario de adviento este año, ¡deberías construir uno ASCII!
Tarea
Teniendo en cuenta la entrada de un número entero ( n
) en el rango 0
- 24
, producen un calendario de advenimiento ASCII con las puertas numeradas hasta al n
, abierto. Debe utilizar el mismo orden que en el ejemplo siguiente: 2
, 17
, 8
, 12
, 1
, 6
, 11
, 20
, 5
, 22
, 3
, 10
, 15
, 23
, 7
, 16
, 9
, 24
, 18
, 4
, 13
, 19
, 21
, 14
.
Puertas
La puerta cerrada debe ser:
.-----------.
| |
| |
| |
| nn |
|___________|
donde n
representa el número de la puerta (los ceros iniciales son opcionales) y la puerta abierta es:
.-----------.
|\ |
| | |
| | |
| | |
| |_________|
\|
a excepción de la puerta 24, que en cambio es:
.--------------------------.
| |
| |
| |
| 24 |
|__________________________|
.--------------------------.
|\ |
| | |
| | |
| | |
| |________________________|
\|
Estas puertas están dispuestas dentro de un marco de 37 líneas de 79 caracteres, con dos espacios entre cada columna y una línea vacía entre cada fila.
Puertas Abiertas
Cuando se abren las puertas, debe mostrar una de las imágenes (tenuemente relacionadas con la Navidad: ¡disculpas por mis terribles habilidades artísticas!) Debajo de la puerta:
. _ . _'_ + .^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 imagen tiene 7 caracteres y cubre 4 líneas para que quepan en las ventanas. Puede elegir cualquiera de las imágenes anteriores y usarlas en cualquier orden, pero no puede repetir una imagen. Para el 24, también debe agregar un mensaje:
~
~ MERRY ~
~ CHRISTMAS! ~
~~~~~
que se ajusta junto a una de las imágenes anteriores, puede elegir si el texto está a la derecha o a la izquierda de la imagen.
Ejemplos
Dada entrada 0
, salida del calendario sin puertas abiertas:
.-----------------------------------------------------------------------------.
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 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
, salida algo similar 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-.) | | | _'._.'_ | |
| | |_________| | |_________| | |_________| | |_________| | |_________| |
| \| \| \| \| \| |
|_____________________________________________________________________________|
Reglas
Este es el código de golf , por lo que gana el código más corto en bytes, en cada idioma.
- Se puede usar cualquier formato razonable para E / S, suponiendo que sea coherente.
- Cualquier cantidad de espacios en blanco antes y después del calendario está bien, así como espacios adicionales / no imprimibles al final de cada línea, pero nada antes de cada línea, ya que debe caber en 80 caracteres.
- Todas las lagunas estándar están prohibidas.
Gracias
James Holderness por contribuir con imágenes ASCII!
Respuestas:
Carbón de leña ,
676 639 614 607 598 590 564561 bytesPruébalo en línea!
Aquí tienes la versión detallada del código , bastante comprensible. Mi enfoque es el opuesto al de @ Neil. Dibuja todos los regalos y luego cubre los que no son necesarios. Solo dibujo los regalos necesarios.
fuente
Print(Map(Map(4,Add(Times(Modulo(i,8),7),Times(56,Add(k,Times(4,IntDivide(i,8)))))),Slice("
... en",k,Add(k,7))));
lugar delfor (4)
bucle.l
opción de Charcoal ...Carbón , 666 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. En realidad no es golf, pero no estoy seguro de querer ...
Pruébalo en línea! El enlace es a la versión detallada del código. Esta es una versión que extrae los regalos por separado para
577541530 bytes después de haber robado varias ideas de @Charlie para jugar golf unos pocos bytes más.fuente
Python 2 ,
132213191287126510611059105610321030 bytesPruébalo en línea!
-4 bytes gracias a Mr.Xcoder
-24 bytes gracias a Lynn
Versión comprimida (gracias a Lynn y ovs):
Python 2 ,
102110171013 bytesPruébalo en línea!
fuente
Befunge,
122011981186 bytesPruébalo en línea!
Todavía podría ser posible jugar más al golf comprimiendo las imágenes, pero eso probablemente requeriría el uso de caracteres ASCII extendidos que actualmente no son compatibles con TIO.
fuente
Python 3 + numpy,
1164115911231103109710651061996994 bytesComprime todas las cosas y usa numpy para unirlas.
Primero construya puertas cerradas, luego reemplace las puertas que deben abrirse. Finalmente, saca todo.
-22 bytes gracias al Sr. Xcoder .
-5 bytes gracias a notjagan .
EDITAR: <1000 bytes!
Pruébalo en línea!
fuente
C (gcc) ,
12961291121111661164 bytesSin embargo, esa cadena súper larga (¡59% de todo!). Hay oro en las colinas; Puedo sentirlo.
Editar: si hay oro, solo he encontrado motas hasta ahora.
Editar: -2 bytes gracias a ceilingcat
Pruébalo en línea!
Versión no ASCII
-30 bytes gracias a ceilingcat .
GCC en mi máquina produce algo que se bloquea de inmediato, por lo que es poco probable que busque este tenedor. (Sin mencionar que TiO calcula 1120 bytes por alguna razón (igual que la cantidad de caracteres informada)).
Enlace de ideona
fuente
C (gcc) ,
279819761963...186217421703165116341632 bytes-2 Bytes gracias a ceilingcat
He reemplazado algunos íconos para evitar caracteres ESC '\' innecesarios.
Pruébalo en línea!
fuente
Rubí , 966 bytes
Pruébalo en línea!
Más golf, pero más difícil de ver las imágenes en el código.
Rubí , 974 bytes
Esta es una función, para ser asignada a una variable como
f
y llamada comof[n]
. Se imprime en stdout.Resultó más de lo esperado. Creo que hay algunos bytes más para exprimir al colocar los datos de la imagen de manera diferente, lo que intentaré más adelante.
Utilizo imágenes simétricas o casi simétricas, y solo la mitad derecha se encuentra en el código. La mitad izquierda puede tener hasta 5 sustituciones de caracteres en comparación con la derecha. El código para hacer las sustituciones es bastante largo, lo que niega parcialmente la compresión. Solo se guardan unos 60 bytes.
Pruébalo en línea!
fuente
Clojure , 1530
Pruébalo
La solución clojure probablemente podría ser un poco más corta, pero aquí está mi primer intento.
fuente