Immagina i seguenti diagrammi come set di tubi verticali incrociati.
1 2 1 2 1 2 3 4
\ / \ / \ / \ /
X | | |
/ \ / \ / \ / \
2 1 1 2 | X |
\ / \ /
X X
/ \ / \
3 1 4 2
Nel diagramma più a sinistra, il 1
e 2
far scorrere verso il basso le rispettive barre, attraversare il X
, ed uscire dai lati opposti da dove sono partiti.
È la stessa idea nel diagramma centrale, ma il |
indica che i percorsi non si incrociano, quindi non cambia nulla.
Il diagramma più a destra mostra un percorso del tubo più complesso che lo consente 1 2 3 4
in 3 1 4 2
.
Obbiettivo
Il tuo obiettivo in questa sfida di golf del codice è di disegnare questi "diagrammi di instradamento del tubo" dati una permutazione come 3 1 4 2
. Vincerà il programma più breve in byte.
Dettagli
- L'input proviene da stdin come qualsiasi permutazione dei numeri da 1 a n separati da spazi, dove n è un numero intero positivo. Si può presumere che tutti gli input siano ben formati.
L'output del diagramma di routing passa a stdout.
- "Rilasciare" i numeri da 1 a n in ordine nella parte superiore del diagramma dovrebbe provocare la permutazione dell'ingresso in basso. (Superiore e inferiore sono sempre strati di barre.)
- Il diagramma non deve essere ottimamente piccolo. Può essere il numero di livelli necessario purché sia corretto.
- Il diagramma deve contenere solo i caratteri
\/ X|
e le nuove righe (nessun numero). |
dovrebbe sempre essere usato sulle intersezioni più esterne dall'usoX
non avrebbe senso.- Alcuni spazi iniziali o finali vanno bene purché il diagramma sia allineato correttamente.
Esempi
Un input di 3 1 4 2
potrebbe produrre (come sopra)
\ / \ /
| |
/ \ / \
| X |
\ / \ /
X X
/ \ / \
Un input di 1
potrebbe produrre
\
|
/
|
\
|
/
Un input di 3 2 1
potrebbe produrre
\ / \
X |
/ \ /
| X
\ / \
X |
/ \ /
Un input di 2 1 3 4 6 5
potrebbe produrre
\ / \ / \ /
X | X
/ \ / \ / \
X
connettersi direttamente al |
modo in cui lo /
fa? A un altro X
?
row of slashes
, row of X's and |'s
, row of slashes
, row of X's and |'s
format, ....
n
essere maggiore di 10?