Imaginez les diagrammes suivants comme des ensembles de tubes croisés verticaux.
1 2 1 2 1 2 3 4
\ / \ / \ / \ /
X | | |
/ \ / \ / \ / \
2 1 1 2 | X |
\ / \ /
X X
/ \ / \
3 1 4 2
Dans le diagramme le plus à gauche, les 1
et 2
glissent vers le bas de leurs barres obliques respectives, se croisent X
et sortent de part et d'autre de leur point de départ.
C'est la même idée dans le diagramme du milieu, mais le |
signifie que les chemins ne se croisent pas, donc rien ne change.
Le diagramme le plus à droite montre un routage de tube plus complexe qui s'infiltre 1 2 3 4
dans 3 1 4 2
.
Objectif
Votre objectif dans ce défi de golf de code est de dessiner ces "diagrammes de routage de tubes" étant donné une permutation telle que 3 1 4 2
. Le programme le plus court en octets gagnera.
Détails
- L'entrée provient de stdin comme toute permutation des nombres de 1 à n séparés par des espaces, où n est un entier positif. Vous pouvez supposer que toutes les entrées sont bien formées.
La sortie du diagramme de routage passe à stdout.
- La «suppression» des nombres de 1 à n dans le haut du diagramme devrait entraîner la permutation d'entrée en bas. (Le haut et le bas sont toujours des couches de barres obliques.)
- Le diagramme n'a pas besoin d'être de petite taille optimale. Il peut y avoir autant de niveaux que nécessaire tant qu'il est correct.
- Le diagramme ne doit contenir que les caractères
\/ X|
ainsi que les retours à la ligne (pas de chiffres). |
doit toujours être utilisé sur les intersections les plus externes, car l'utilisationX
n'aurait aucun sens.- Quelques espaces de début ou de fin sont corrects tant que le diagramme est correctement aligné.
Exemples
Une entrée de 3 1 4 2
pourrait produire (comme ci-dessus)
\ / \ /
| |
/ \ / \
| X |
\ / \ /
X X
/ \ / \
Un apport de 1
pourrait produire
\
|
/
|
\
|
/
Un apport de 3 2 1
pourrait produire
\ / \
X |
/ \ /
| X
\ / \
X |
/ \ /
Un apport de 2 1 3 4 6 5
pourrait produire
\ / \ / \ /
X | X
/ \ / \ / \
X
connecter directement à un comme |
le fait un /
? À un autre X
?
row of slashes
, row of X's and |'s
, row of slashes
, row of X's and |'s
, ... format.
n
être supérieur à 10?