introduzione
Mia nipote vuole fare una pista da corsa. Ha parti in legno che si incastrano per formare la pista. Ogni parte ha una forma quadrata e contiene una forma diversa. Userò i caratteri del disegno della pipa per illustrare:
│: la strada che va in verticale─: la strada che va in orizzontale┌┐└┘: le strade che girano in una direzione┼: Un ponte con un sottopasso
Curiosamente, non ci sono pezzi di giunzione a T.
Ecco un esempio di una possibile pista per auto da corsa:
┌─┐
│ │┌─┐
│ └┼─┘
└──┘
Le regole per una pista di gara valida sono le seguenti:
- Non ci possono essere strade che non vanno verso il nulla.
- Deve formare un anello (e tutti i pezzi devono far parte dello stesso anello).
- Ai ponti / sottopassi, non puoi girare (quindi devi attraversarli).
Sfortunatamente, la pista della macchina da corsa collega me e mia nipote sono limitate. Ma vogliamo sicuramente usarli tutti in pista. Scrivi un programma che, dato un elenco di quali pezzi sono presenti nel nostro inventario, produce una pista per auto da corsa che utilizza tutti quei pezzi.
Descrizione dell'input
Vorremmo che l'input arrivasse tramite STDIN, argomenti della riga di comando, lettura dei file o una funzione di input dell'utente (come raw_inputo prompt). L'input è numeri interi positivi separati da virgola nel modulo
│,─,┌,┐,└,┘,┼
dove ognuno di questi rappresenta la quantità di quel particolare pezzo che abbiamo. Quindi ad esempio l'input:
1,1,1,1,1,1,1
significherebbe che ne avevamo uno per ogni pezzo.
Descrizione dell'uscita
Emetti una pista per auto da corsa usando i caratteri del disegno della tubazione sopra elencati. La pista della macchina da corsa dovrebbe usare esattamente il numero di ogni pezzo specificato nell'input - né più né meno. Ci sarà almeno una pista di gara valida per ogni ingresso.
Esempi di ingressi e uscite
Ingresso: 3,5,2,2,2,2,1
Una possibile uscita:
┌─┐
│ │┌─┐
│ └┼─┘
└──┘
Ingresso: 0,0,1,4,4,1,3
Una possibile uscita:
┌┐
└┼┐
└┼┐
└┼┐
└┘