C'est cette période de l'année où beaucoup d'entre nous ont leurs calendriers de l'Avent ! Si vous ne connaissez pas bien le calendrier de l’avent, ce sont des calendriers spéciaux utilisés pour décompter l’avent en prévision de Noël. D'après mon expérience, les portes sont placées au hasard et une partie de l'amusement alors qu'un enfant travaillait là où était la porte de demain! Ces jours-ci, les calendriers ont souvent des chocolats derrière chaque porte, mais au lieu d’acheter un calendrier de l’avent cette année, vous devriez en créer un en ASCII!
Tâche
Étant donné l'entrée d'un entier ( n
) dans la plage 0
- 24
, créez un calendrier de l'avent ASCII avec les portes numérotées n
ouvertes et à numéroter . Vous devez utiliser le même ordre que dans l'exemple ci - dessous: 2
, 17
, 8
, 12
, 1
, 6
, 11
, 20
, 5
, 22
, 3
, 10
, 15
, 23
, 7
, 16
, 9
, 24
, 18
, 4
, 13
, 19
, 21
, 14
.
Des portes
La porte fermée doit être:
.-----------.
| |
| |
| |
| nn |
|___________|
où n
représente le numéro de la porte (les zéros au début sont facultatifs) et la porte ouverte est:
.-----------.
|\ |
| | |
| | |
| | |
| |_________|
\|
sauf pour la porte 24, qui est plutôt:
.--------------------------.
| |
| |
| |
| 24 |
|__________________________|
.--------------------------.
|\ |
| | |
| | |
| | |
| |________________________|
\|
Ces portes sont disposées dans un cadre de 37 lignes de 79 caractères, avec deux espaces entre chaque colonne et une ligne vide entre chaque ligne.
Portes ouvertes
Lorsque les portes sont ouvertes, vous devez afficher l'une des images (légèrement liées à Noël - des excuses pour mes terribles talents artistiques!) Ci-dessous à l'intérieur de la porte:
. _ . _'_ + .^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 ) /_/\_\ |_/\*_| %%
""""""" `=====' '-' `"` \/ [_____] //
Chaque image est composée de 7 caractères et couvre 4 lignes afin qu’elles tiennent dans les fenêtres. Vous êtes libre de choisir l'une des images ci-dessus et de les utiliser dans n'importe quel ordre, mais vous ne pouvez pas répéter une image. Pour le 24, vous devez également ajouter un message:
~
~ MERRY ~
~ CHRISTMAS! ~
~~~~~
qui correspond à une des images ci-dessus, vous pouvez choisir si le texte est à droite ou à gauche de l’image.
Exemples
Donnée entrée 0
, sortie le calendrier sans portes ouvertes:
.-----------------------------------------------------------------------------.
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 2 | | 17 | | 8 | | 12 | | 1 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 6 | | 11 | | 20 | | 5 | | 22 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 3 | | 10 | | 15 | | 23 | | 7 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
| .-----------. .-----------. .--------------------------. .-----------. |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | 16 | | 9 | | 24 | | 18 | |
| |___________| |___________| |__________________________| |___________| |
| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 4 | | 13 | | 19 | | 21 | | 14 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
|_____________________________________________________________________________|
Pour l’entrée 5
, donnez quelque chose de similaire à:
.-----------------------------------------------------------------------------.
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ . _ . | | | | | | | |\ __.==,_ | |
| | | }\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 | |
| | |_________| |___________| |___________| |___________| |___________| |
| \| |
|_____________________________________________________________________________|
Pour entrée 14
:
.-----------------------------------------------------------------------------.
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ . _ . | | | |\ . | |\ ____ | |\ __.==,_ | |
| | | }\O/{ | | | | | __/ \__ | | | /_%_/| | | | --|XX|- | |
| | | }/*\{ | | | | | `. .' | | | |_|_| | | | | _| | | |
| | | /***\ | | 17 | | | /.^.\ | | | |_|_|/ | | | (____' | |
| | |_________| |___________| | |_________| | |_________| | |_________| |
| \| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _ | |\ $ | | | |\ _{/ _{/ | | | |
| | | .'.'O | | | |,| | | | | | \_/ | | | |
| | | /___\ | | | | | | | | | | /O \ | | | |
| | | (_____) | | | ._|_|_. | | 20 | | | @__,/\\ | | 22 | |
| | |_________| | |_________| |___________| | |_________| |___________| |
| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _n_ | |\ _(")_ | | | | | |\ |=| | |
| | | (") | | | (_ . _) | | | | | | | / \ | |
| | | >( o )< | | | / : \ | | | | | | | |(%)| | |
| | | ( o ) | | | (_/ \_) | | 15 | | 23 | | | |___| | |
| | |_________| | |_________| |___________| |___________| | |_________| |
| \| \| \| |
| .-----------. .-----------. .--------------------------. .-----------. |
| | | |\ \ ==== | | | | | |
| | | | | \\\|--| | | | | | |
| | | | | \\\\\-| | | | | | |
| | 16 | | | \\\\\\\ | | 24 | | 18 | |
| |___________| | |_________| |__________________________| |___________| |
| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ + | |\ , * | | | | | |\ i | |
| | | /~\ | | | + . + | | | | | | | .'%'. | |
| | | /~*~\ | | | . ' . | | | | | | | |^~~.~| | |
| | | /~*~~*\ | | | ~~~~~~~ | | 19 | | 21 | | | _'._.'_ | |
| | |_________| | |_________| |___________| |___________| | |_________| |
| \| \| \| |
|_____________________________________________________________________________|
Pour entrée 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-.) | | | _'._.'_ | |
| | |_________| | |_________| | |_________| | |_________| | |_________| |
| \| \| \| \| \| |
|_____________________________________________________________________________|
Règles
C'est le code-golf, donc le code le plus court en octets, dans chaque langue, gagne.
- Tout format raisonnable peut être utilisé pour les E / S, à condition qu’il soit cohérent.
- N'importe quelle quantité d'espaces avant et après le calendrier convient, ainsi que des espaces / espaces non imprimables supplémentaires à la fin de chaque ligne, mais rien avant chaque ligne car celle-ci doit contenir 80 caractères.
- Toutes les échappatoires standard sont interdites.
Merci
James Holderness pour avoir contribué aux images ASCII!
Réponses:
Charbon de bois ,
676 639 614 607 598 590 564561 octetsEssayez-le en ligne!
Ici vous avez la version verbeuse du code , tout à fait compréhensible. Mon approche est l'inverse de @ Neil's. Il dessine tous les cadeaux et couvre ceux qui ne sont pas nécessaires. Je dessine seulement les cadeaux nécessaires.
la source
Print(Map(Map(4,Add(Times(Modulo(i,8),7),Times(56,Add(k,Times(4,IntDivide(i,8)))))),Slice("
...",k,Add(k,7))));
au lieu de lafor (4)
boucle.l
option de charbon de bois ...Charbon de bois , 666 octets
Essayez-le en ligne! Le lien est vers la version verbeuse du code. Pas vraiment joué au golf, mais je ne suis pas sûr de vouloir ...
Essayez-le en ligne! Le lien est vers la version verbeuse du code. Ceci est une version qui dessine les cadeaux séparément pour
577541530 octets après avoir volé plusieurs idées de @Charlie pour donner quelques octets de plus au golf.la source
Python 2 ,
132213191287126510611059105610321030 octetsEssayez-le en ligne!
-4 octets grâce à Mr.Xcoder
-24 octets grâce à Lynn
Version comprimée (merci à Lynn et ovs):
Python 2 ,
102110171013 octetsEssayez-le en ligne!
la source
Befunge,
122011981186 octetsEssayez-le en ligne!
Il serait peut-être encore possible d’aller plus loin en compressant les images, mais cela nécessiterait probablement l’utilisation de caractères ASCII étendus qui ne sont actuellement pas pris en charge sur TIO.
la source
Python 3 + numpy,
1164115911231103109710651061996994 octetsCompressez tout et utilisez numpy pour les lier ensemble.
Commencez par construire des portes fermées, puis remplacez les portes qui doivent être ouvertes. Enfin, tout afficher.
-22 octets grâce à M. Xcoder .
-5 octets grâce à notjagan .
EDIT: <1000 octets!
Essayez-le en ligne!
la source
C (gcc) ,
12961291121111661164 octetsCette chaîne très longue, cependant (59% de la chose!). Il y a de l'or dans ces collines; Je peux le sentir.
Edit: S'il y a de l'or, je n'ai trouvé que des points jusqu'à présent.
Edit: -2 octets grâce à ceilingcat
Essayez-le en ligne!
Version non-ASCII
-30 octets grâce à ceilingcat .
GCC sur ma machine produit quelque chose qui se bloque immédiatement, ce qui rend improbable la poursuite de cette fourche. (Sans oublier que TiO estime 1120 octets pour une raison quelconque (identique à la quantité de caractères indiquée).).
Lien Ideone
la source
C (gcc) ,
279819761963...186217421703165116341632 octets-2 octets grâce à ceilingcat
J'ai remplacé quelques icônes pour éviter les caractères ESC inutiles.
Essayez-le en ligne!
la source
Ruby , 966 octets
Essayez-le en ligne!
Plus joué au golf, mais plus difficile à voir les images dans le code.
Ruby , 974 octets
C'est une fonction, à assigner à une variable telle que
f
et appelée commef[n]
. Il imprime sur la sortie standard.S'est avéré plus long que prévu. Je pense qu'il reste encore quelques octets à supprimer en organisant les données d'image différemment, ce que j'essaierai plus tard.
J'utilise des images symétriques ou quasi symétriques, et seule la moitié droite se trouve dans le code. La moitié gauche peut avoir jusqu'à 5 remplacements de caractères par rapport à la droite. Le code pour effectuer les substitutions est assez long, ce qui annule partiellement la compression. Environ 60 octets seulement sont enregistrés.
Essayez-le en ligne!
la source
Clojure , 1530
Essaye le
La solution de clojure pourrait probablement être un peu plus courte, mais voici ma première tentative.
la source