Dai un'occhiata a questo diagramma di arte ascii di varie scatole:
+--------------------------------------------------------------+
| |
| +-------------------------------+ +-------+ |
| | | | | |
| | | | | |
| | +----------------+ | | | |
| | | | | +-------+ |
| | | | | |
| | | | | +-------+ |
| | +----------------+ | | | |
| | | | | |
| | | | | |
| +-------------------------------+ +-------+ |
| |
+--------------------------------------------------------------+
Ogni casella è formata da caratteri di tubo per le parti verticali ( |), trattini per le parti orizzontali ( -) e vantaggi per gli angoli ( +).
Il diagramma mostra anche le caselle all'interno di altre caselle. Chiameremo il numero di scatole che una scatola è contenuta all'interno del relativo livello . Ecco di nuovo il diagramma con il livello di ogni casella annotato:
+--------------------------------------------------------------+
| |
| +-------------------------------+ +-------+ |
| | | | | |
| | | | 1 | |
| | +----------------+ | | | |
| | | | | 0 +-------+ |
| | | 2 | 1 | |
| | | | | +-------+ |
| | +----------------+ | | | |
| | | | 1 | |
| | | | | |
| +-------------------------------+ +-------+ |
| |
+--------------------------------------------------------------+
Il tuo programma prenderà un diagramma a scatole simile a quello in alto come input. Come output, il tuo programma dovrebbe generare il diagramma a scatole con:
- La casella sul livello 0 deve essere riempita con il carattere
#(NB: ci sarà sempre una sola casella sul livello 0); - Le caselle sul livello 1 devono essere riempite con il personaggio
=; - Le caselle sul livello 2 devono essere riempite con il personaggio
-; - Le caselle sul livello 3 devono essere riempite con il personaggio
.; - Le caselle di livello 4 e superiore non devono essere riempite.
Ecco come dovrebbe apparire l'output dell'input di esempio:
+--------------------------------------------------------------+
|##############################################################|
|###+-------------------------------+##########+-------+#######|
|###|===============================|##########|=======|#######|
|###|===============================|##########|=======|#######|
|###|=====+----------------+========|##########|=======|#######|
|###|=====|----------------|========|##########+-------+#######|
|###|=====|----------------|========|##########################|
|###|=====|----------------|========|##########+-------+#######|
|###|=====+----------------+========|##########|=======|#######|
|###|===============================|##########|=======|#######|
|###|===============================|##########|=======|#######|
|###+-------------------------------+##########+-------+#######|
|##############################################################|
+--------------------------------------------------------------+
Ecco un altro input e output che mostra i livelli 3, 4 e 5. Nota le linee orizzontali in alto che sono molto vicine tra loro. In questi casi non c'è abbastanza spazio per riempire i personaggi lì.
+-----------------------------------------------------------------------+
| +--------------------------------------------------------------+ |
| | +-----------------------------------------------------+ | |
| | | +-----------------------------------------+ | | |
| | | | +---------------------------+ | | | |
| | | | | +-------------+ | | | | |
| | | | | | | | | | | |
| | | | | +-------------+ | | | | |
| | | | +---------------------------+ | | | |
| | | | | | | |
| | | +-----------------------------------------+ | | |
| | | | | |
| | | | | |
| | +-----------------------------------------------------+ | |
| | | |
| +--------------------------------------------------------------+ |
| |
| |
| |
+-----------------------------------------------------------------------+
L'output:
+-----------------------------------------------------------------------+
|#####+--------------------------------------------------------------+##|
|#####|======+-----------------------------------------------------+=|##|
|#####|======|---------+-----------------------------------------+-|=|##|
|#####|======|---------|...........+---------------------------+.|-|=|##|
|#####|======|---------|...........| +-------------+ |.|-|=|##|
|#####|======|---------|...........| | | |.|-|=|##|
|#####|======|---------|...........| +-------------+ |.|-|=|##|
|#####|======|---------|...........+---------------------------+.|-|=|##|
|#####|======|---------|.........................................|-|=|##|
|#####|======|---------+-----------------------------------------+-|=|##|
|#####|======|-----------------------------------------------------|=|##|
|#####|======|-----------------------------------------------------|=|##|
|#####|======+-----------------------------------------------------+=|##|
|#####|==============================================================|##|
|#####+--------------------------------------------------------------+##|
|#######################################################################|
|#######################################################################|
|#######################################################################|
+-----------------------------------------------------------------------+
Un altro input, questa volta anche con le linee verticali vicine tra loro:
+-------------+
|+-----------+|
|| ||
|| ||
|| ||
|+-----------+|
+-------------+
L'output:
+-------------+
|+-----------+|
||===========||
||===========||
||===========||
|+-----------+|
+-------------+
Note aggiuntive
- Ci possono essere spazi bianchi attorno alla scatola più esterna.
- Le scatole non possono avere una larghezza interna o un'altezza di 0 (quindi avranno sempre un po 'di spazio al loro interno)
- Le caselle sullo stesso livello possono toccarsi.
import java.util.Scannerconimport java.util.*