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.*