Jetez un œil à ce diagramme d'art ascii de différentes boîtes:
+--------------------------------------------------------------+
| |
| +-------------------------------+ +-------+ |
| | | | | |
| | | | | |
| | +----------------+ | | | |
| | | | | +-------+ |
| | | | | |
| | | | | +-------+ |
| | +----------------+ | | | |
| | | | | |
| | | | | |
| +-------------------------------+ +-------+ |
| |
+--------------------------------------------------------------+
Chaque boîte est formée de caractères de tuyau pour les parties verticales ( |
), de tirets pour les parties horizontales ( -
) et d'avantages pour les coins ( +
).
Le diagramme montre également des boîtes à l'intérieur d'autres boîtes. Nous appellerons le nombre de boîtes qu'une boîte est contenue dans la couche de cette boîte . Voici à nouveau le diagramme avec le calque de chaque boîte annoté:
+--------------------------------------------------------------+
| |
| +-------------------------------+ +-------+ |
| | | | | |
| | | | 1 | |
| | +----------------+ | | | |
| | | | | 0 +-------+ |
| | | 2 | 1 | |
| | | | | +-------+ |
| | +----------------+ | | | |
| | | | 1 | |
| | | | | |
| +-------------------------------+ +-------+ |
| |
+--------------------------------------------------------------+
Votre programme prendra en entrée un diagramme similaire à celui du haut. En sortie, votre programme devrait sortir le diagramme avec:
- La case sur le calque 0 doit être remplie avec le caractère
#
(NB: il n'y aura qu'un seul case sur le calque 0); - Les cases du calque 1 doivent être remplies avec le caractère
=
; - Les cases du calque 2 doivent être remplies avec le caractère
-
; - Les cases du calque 3 doivent être remplies avec le caractère
.
; - Les cases de la couche 4 et au-dessus ne doivent pas être remplies.
Voici à quoi devrait ressembler la sortie de l'exemple d'entrée:
+--------------------------------------------------------------+
|##############################################################|
|###+-------------------------------+##########+-------+#######|
|###|===============================|##########|=======|#######|
|###|===============================|##########|=======|#######|
|###|=====+----------------+========|##########|=======|#######|
|###|=====|----------------|========|##########+-------+#######|
|###|=====|----------------|========|##########################|
|###|=====|----------------|========|##########+-------+#######|
|###|=====+----------------+========|##########|=======|#######|
|###|===============================|##########|=======|#######|
|###|===============================|##########|=======|#######|
|###+-------------------------------+##########+-------+#######|
|##############################################################|
+--------------------------------------------------------------+
Voici une autre entrée et sortie montrant les couches 3, 4 et 5. Notez les lignes horizontales en haut qui sont très rapprochées. Dans ces cas, il n'y a pas assez d'espace pour y remplir des caractères.
+-----------------------------------------------------------------------+
| +--------------------------------------------------------------+ |
| | +-----------------------------------------------------+ | |
| | | +-----------------------------------------+ | | |
| | | | +---------------------------+ | | | |
| | | | | +-------------+ | | | | |
| | | | | | | | | | | |
| | | | | +-------------+ | | | | |
| | | | +---------------------------+ | | | |
| | | | | | | |
| | | +-----------------------------------------+ | | |
| | | | | |
| | | | | |
| | +-----------------------------------------------------+ | |
| | | |
| +--------------------------------------------------------------+ |
| |
| |
| |
+-----------------------------------------------------------------------+
Le résultat:
+-----------------------------------------------------------------------+
|#####+--------------------------------------------------------------+##|
|#####|======+-----------------------------------------------------+=|##|
|#####|======|---------+-----------------------------------------+-|=|##|
|#####|======|---------|...........+---------------------------+.|-|=|##|
|#####|======|---------|...........| +-------------+ |.|-|=|##|
|#####|======|---------|...........| | | |.|-|=|##|
|#####|======|---------|...........| +-------------+ |.|-|=|##|
|#####|======|---------|...........+---------------------------+.|-|=|##|
|#####|======|---------|.........................................|-|=|##|
|#####|======|---------+-----------------------------------------+-|=|##|
|#####|======|-----------------------------------------------------|=|##|
|#####|======|-----------------------------------------------------|=|##|
|#####|======+-----------------------------------------------------+=|##|
|#####|==============================================================|##|
|#####+--------------------------------------------------------------+##|
|#######################################################################|
|#######################################################################|
|#######################################################################|
+-----------------------------------------------------------------------+
Une autre entrée, cette fois avec les lignes verticales rapprochées:
+-------------+
|+-----------+|
|| ||
|| ||
|| ||
|+-----------+|
+-------------+
Le résultat:
+-------------+
|+-----------+|
||===========||
||===========||
||===========||
|+-----------+|
+-------------+
Notes complémentaires
- Il peut y avoir des espaces autour de la boîte la plus à l'extérieur.
- Les boîtes ne peuvent pas avoir une largeur ou une hauteur interne de 0 (elles auront donc toujours de l'espace à l'intérieur)
- Les boîtes sur le même calque peuvent se toucher.
import java.util.Scanner
parimport java.util.*
CJam,
114111108104103102 10298 octetsEssayez-le en ligne dans l' interpréteur CJam .
Comment ça marche
la source
JavaScript ( ES6 ) 156
Exécutez l'extrait dans Firefox pour tester
la source
CJam,
7674 octetsEssayez-le en ligne dans le interpréteur CJam .
Comment ça marche
la source
APL (Dyalog Unicode) , 50 octets SBCS
Essayez-le en ligne!
s←' #=-.+|'
affecter une chaîne à une variables
⎕
entrée évaluée, il doit s'agir d'une matrice de caractères⎕⍳⍨s
remplacer chaque élément de⎕
son indexs
a←
affecter àa
5=
retourne une matrice booléenne de l'endroit où les+
-es sonta
(s[5]
est'+'
)(⊢ׯ1*+⍀++\)
c'est un train de fonctions:+\
matrice des sommes partielles par ligne+
plus+⍀
matrice des sommes partielles par colonne¯1*
négatif à la puissance de - transformer les cotes en ¯1 et égaliser en 1⊢×
multiplier par l'argument du train - zéro tout sauf les coins de boîte+⍀+\
sommes partielles par colonne de sommes partielles par ligne5⌊
minimum de cela et 55|
modulo 5a,¨
jumeler les éléments dea
et de la matrice actuelle0~¨⍨
supprimer 0 des paires⊃¨
d'abord chacun de ce qui restes[ ]
utiliser chaque élément comme index danss
la source
↑⍞⍞...⍞
évalue de droite à gauche. Pour le premier exemple, cela n'avait pas d'importance et j'ai oublié de le mentionner..
s où il ne devrait pas> <> ,
118 11587 octetsEssayez-le en ligne!
Si l'un des symboles n'était pas un,Eh, j'ai réussi un-
cela pourrait être 6 octets plus court.peuplus petit de toute façonComment ça marche:
la source
C (gcc) ,
190179 octets-11 octets grâce au plafond
Échoue si sizeof (int)> 9, mais alors vous pouvez vous consoler du fait que votre ordinateur est du futur.
Essayez-le en ligne!
la source