C'est bientôt l'anniversaire de mon ami et comme il est programmeur et amateur d'art ASCII, j'ai pensé lui faire du gâteau ASCII!
Malheureusement, je continue d'oublier son âge actuel, donc j'aimerais avoir un programme pour mon four ASCII, qui prépare un gâteau avec un nombre spécifié de bougies, donc je n'ai pas à le refaire moi-même si je me trompe avec son âge.
Les fours ASCII n'ont qu'une capacité de mémoire et de stockage limitée, ils doivent donc utiliser le moins d'octets possible .
Ta tâche:
Écrivez un programme qui génère un gâteau d'anniversaire sur la console, avec autant de bougies que l'entrée spécifie.
Les exigences de gâteau sont:
- Il doit avoir une bordure, constituée de lignes horizontales
-
et verticales|
et de sommets+
. - Au moins 5 caractères de large (y compris la bordure du gâteau
|
) - Au moins 5 caractères de haut (y compris la bordure du gâteau
-
) - Il doit y avoir un espace blanc
entre la bordure du gâteau et la première base de bougie (pas la flamme), de chaque côté, sauf s'il y a une flamme dans cet espace. Une flamme ou une base de bougie ne doit pas pouvoir chevaucher les bords du gâteau.
- La largeur maximale du gâteau est de 9 caractères, il y a donc un maximum de 5 bougies par ligne.
- Puisque nous ne voulons pas que notre gâteau soit à 2 dimensions, il doit être de 2 rangées de plus pour lui donner du volume. Ajoutez une autre bordure en bas et connectez les sommets avec ceux au-dessus d'eux, en utilisant à nouveau les caractères ASCII d'en haut (
-
,|
et+
).
Les exigences relatives aux bougies sont les suivantes:
- Se compose de la base
|
et de la flamme*
, la flamme étant empilée sur le dessus de la base. - Les bougies ne doivent pas être directement adjacentes, sauf en diagonale.
- Les bougies sont placées de gauche à droite, puis de haut en bas, avec 5 sur une ligne au maximum.
(Remarque: s'il y avait 5 bougies dans la ligne précédente, la ligne suivante ne peut pas avoir 5 également, car alors elles seraient adjacentes.)
Notes complémentaires:
- La largeur du gâteau dépend du nombre de bougies dans la première rangée, mais elle doit être d'un minimum de 5 caractères et d'un maximum de 9 caractères de large.
- Les bougies sont remplies en commençant dans la rangée la plus haute, de gauche à droite. Une fois une ligne remplie, la suivante doit commencer dans la ligne en dessous de la première.
Contribution:
Vous pouvez accepter un nombre dans le format (raisonnable) que vous aimez.
Pour ce défi, vous pouvez supposer que le nombre est compris entre 0 et 2 31 (non compris 0), même si je ne reconnais pas quelqu'un qui est aussi vieux.
Production:
Vous pouvez soit renvoyer une chaîne ou écrire directement le gâteau résultant dans la console de sortie.
Règles:
- Les failles standard sont interdites.
- C'est le code-golf , donc le code le plus court en octets, dans n'importe quelle langue, gagne.
Exemples:
Contribution: 8
+-----------+
| * * * * * |
| |*|*|*| | |
| | | | |
| |
+-----------+
| |
+-----------+
Contribution: 2
+-----+
| * * |
| | | |
| |
+-----+
| |
+-----+
Contribution: 12
+-----------+
| * * * * * |
| |*|*|*|*| |
| *|*|*| | |
| | | | |
| |
+-----------+
| |
+-----------+
Bonne chance!
Réponses:
Charbon de bois ,
767170 6646 octetsEssayez-le en ligne! Le lien est vers la version détaillée du code. Edit: 1 octet enregistré grâce à @ASCII_Only. Vous avez économisé un énorme 20 octets en découvrant une façon soignée de dessiner les bougies. Explication:
Calculez la taille du gâteau entier, y compris le volume supplémentaire et juste le haut du gâteau afin qu'ils puissent être dessinés. ((
=
= ASCII 61) = (+
= ASCII 43) + 9 * 2 pour le volume supplémentaire.)Déplacez le curseur sur la première rangée de 5 bougies. Faites une boucle à travers chaque bougie.
Imprimez une bougie et déplacez à droite deux caractères pour la bougie suivante.
Cependant, après les bougies (indexées zéro) 4e, 8e, 13e, 17e, 22e, etc. (qui sont à la fin d'une rangée),
placez le curseur sur la première bougie de la rangée suivante. Cela fonctionne sur les lignes paires et impaires!
la source
A
au début: P (btw merci d'avoir trouvé un autre cas de bord de golfeur (pas si))Gelée , 67 octets
Un lien monadique prenant un nombre et renvoyant une liste de caractères ou un programme complet imprimant la sortie.
Essayez-le en ligne!
Comment?
la source
Japt , 94 octets
Essayez-le en ligne!
la source