J'aime l'art ascii et je m'ennuie beaucoup, alors j'ai trouvé des personnages ascii et j'ai commencé à faire des choses au hasard, un château mario 8 bits, des labyrinthes et des arches. J'ai trouvé que les arches pouvaient facilement être empilées de manière ordonnée.
╔═══════╗
║╔═════╗║
║║╔═══╗║║
║║║╔═╗║║║
╨╨╨╨─╨╨╨╨
Défi
Créez un programme, une fonction ou tout autre format standard qui accepte un entier supérieur ou égal à 0 (sauf si vous faites le bonus) et génère de l'art ascii avec le nombre d'arches spécifié.
Cas de test
Contribution:
7
Production:
╔═════════════╗
║╔═══════════╗║
║║╔═════════╗║║
║║║╔═══════╗║║║
║║║║╔═════╗║║║║
║║║║║╔═══╗║║║║║
║║║║║║╔═╗║║║║║║
╨╨╨╨╨╨╨─╨╨╨╨╨╨╨
Alt:
+-------------+
|+-----------+|
||+---------+||
|||+-------+|||
||||+-----+||||
|||||+---+|||||
||||||+-+||||||
||||||| |||||||
---------------
Contribution:
1
Production:
╔═╗
╨─╨
Alt:
+-+
| |
---
- Si l'entier est 0 alors ne rien afficher
- Cette question sera en utf-8, chaque caractère comptera comme un "octet"
- Il s'agit de codegolf, donc la réponse la plus courte l'emporte.
- Vous avez la possibilité d'utiliser
+-+
au lieu de╔═╗
,---
au lieu de╨─╨
et|
au lieu de║
Bonus (pas décidé d'autoriser cela sur la version alternative car ce ne serait pas aussi difficile)
-10% si le programme prend en charge les nombres négatifs et retourne les arcs comme ça
╥╥╥╥─╥╥╥╥
║║║╚═╝║║║
║║╚═══╝║║
║╚═════╝║
╚═══════╝
+---+
en haut, sur les côtés|
et en bas-----
qui me semble bien. Juanpotato, si vous souhaitez utiliser des caractères non-ascii, veuillez indiquer l'encodage dans la question. Dans l'état actuel des choses, je vote pour clore car pas clair.Réponses:
CJam, 59 octets
Essayez-le ici!
la source
Python 2, 106 octets (94 caractères)
Assez simple. Imprime ligne par ligne avec un nombre variable de barres horizontales et verticales. La dernière ligne est imprimée séparément.
J'ai l'impression de manquer quelques optimisations. Le fait que les caractères soient sur plusieurs octets signifie que vous ne pouvez pas faire quelque chose comme ça
'║╨'[n>0]
, donc je n'ai pas trouvé un bon moyen d'imprimer la dernière ligne de la boucle. C'est moche qu'il y ait tellement de manipulation en cours avec le compteur. J'aimerais mettre à jour les chaînes directement, commes+='║'
, mais l'index est également utilisé pour les barres horizontales.la source
+-|
pour construire les arches, voir op pour des exemples.Perl,
7882 caractèresMalheureusement, je ne pouvais pas trouver un moyen de profiter du bonus sans augmenter la taille de plus de 10%. Je peux peut-être encore l'emporter.
Non golfé
Assez simple, vraiment. Construit la ligne du bas (
╨$n╨
) progressivement, tout en raccourcissant la ligne du haut (══
) de deux caractères, se terminant lorsqu'elle ne peut plus être raccourcie, donc je n'ai pas à jouer avec les compteurs.la source
─
pour n = 0, mais il ne devrait rien imprimer.-n
: Essayez-le en ligne!Bash, 124 octets (112 caractères)
Exemple d'exécution:
la source
Japt
-R
, 29 octetsUtilise
+
&-
. Sacrifié 4 octets pour gérer la validation d'entrée sanglante !Essayez-le
Explication
la source
0
If the integer is 0 then don't output anything
du défi: /0
,false
ou une chaîne vide au prix de quelques octets, mais je ne sais pas si l'une d'entre elles serait acceptable sauf, peut-être, la chaîne vide, qui me coûterait 5 octets (0
me coûterait seulement 1).JavaScript (ES6), 101 caractères
Explication
Fonction récursive qui imprime chaque ligne
Tester
Le test n'utilise pas de paramètre par défaut pour la compatibilité du navigateur.
Afficher l'extrait de code
la source
PHP (109 caractères)
Il faut encore se débarrasser de ce str_repeat mais la plupart des alternatives ne gèreront pas les caractères mulyibyte.
la source
Retina , 79 caractères
Essayez-le en ligne.
Cela utilise une nouvelle fonctionnalité dans Retina qui remplace un nombre décimal
\d+
par une liste de ce nombre de caractères$0$*═
.la source
Swift (209 octets)
Swift n'est probablement pas le meilleur langage pour cela, c'est ma première fois que je tente de relever un défi de golf de code:
la source
Ruby, 90 octets (74 caractères)
Exemple d'exécution:
la source
Haskell,
151162 octetsEdit: j'ai oublié de traiter
0
comme entréela source
𝔼𝕊𝕄𝕚𝕟, 54 caractères / 95 octets
Try it here (Firefox only).
Explication
REMARQUE: cela utilise de bons vieux blocs de copie pour atteindre les endroits où la déclaration de variable ordinaire ne peut pas atteindre.
la source
Sed, 97 octets (81 caractères)
(Code de 96 octets (80 caractères) + option de ligne de commande de 1 caractère)
Entrée attendue comme unaire entier .
Exemple d'exécution:
Sed, 105 octets (75 caractères)
(Code de 104 octets (74 caractères) + option de ligne de commande de 1 caractère)
Entrée attendue comme unaire entier .
Exemple d'exécution:
la source
Toile , 15 octets
Essayez-le ici!
Explication:
la source