Imagine os diagramas a seguir como conjuntos de tubos verticais cruzados.
1 2 1 2 1 2 3 4
\ / \ / \ / \ /
X | | |
/ \ / \ / \ / \
2 1 1 2 | X |
\ / \ /
X X
/ \ / \
3 1 4 2
No diagrama mais à esquerda, o 1
e 2
deslizar para baixo as respectivas barras, atravessar no X
, e sair em lados opostos do local onde iniciada.
É a mesma idéia no diagrama do meio, mas |
significa que os caminhos não se cruzam, então nada muda.
O diagrama mais à direita mostra um roteamento de tubo mais complexo que permite a 1 2 3 4
entrada 3 1 4 2
.
Objetivo
Seu objetivo neste desafio do código de golfe é desenhar esses "diagramas de roteamento de tubos", com uma permutação como 3 1 4 2
. O programa mais curto em bytes vencerá.
Detalhes
- A entrada vem de stdin como qualquer permutação dos números de 1 a n separados por espaços, onde n é um número inteiro positivo. Você pode assumir que todas as informações estão bem formadas.
A saída do diagrama de roteamento vai para stdout.
- "Soltar" os números de 1 a n em ordem na parte superior do diagrama deve resultar na permutação de entrada saindo na parte inferior. (Superior e inferior são sempre camadas de barras.)
- O diagrama não precisa ser otimamente pequeno. Pode ser quantos níveis forem necessários, desde que esteja correto.
- O diagrama deve conter apenas os caracteres
\/ X|
e as novas linhas (sem números). |
sempre deve ser usado nas interseções mais externas, pois o usoX
não faria sentido.- Alguns espaços à esquerda ou à direita são bons, desde que o diagrama esteja alinhado corretamente.
Exemplos
Uma entrada de 3 1 4 2
pode produzir (o mesmo que acima)
\ / \ /
| |
/ \ / \
| X |
\ / \ /
X X
/ \ / \
Uma entrada de 1
pode produzir
\
|
/
|
\
|
/
Uma entrada de 3 2 1
pode produzir
\ / \
X |
/ \ /
| X
\ / \
X |
/ \ /
Uma entrada de 2 1 3 4 6 5
pode produzir
\ / \ / \ /
X | X
/ \ / \ / \
X
conectar - se diretamente a um |
modo como o /
faz? Para outro X
?
row of slashes
, row of X's and |'s
, row of slashes
, row of X's and |'s
, ... formato.
n
ser maior que 10?