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 1e 2deslizar 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 4entrada 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 usoXnã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 2pode produzir (o mesmo que acima)
\ / \ /
| |
/ \ / \
| X |
\ / \ /
X X
/ \ / \
Uma entrada de 1pode produzir
\
|
/
|
\
|
/
Uma entrada de 3 2 1pode produzir
\ / \
X |
/ \ /
| X
\ / \
X |
/ \ /
Uma entrada de 2 1 3 4 6 5pode produzir
\ / \ / \ /
X | X
/ \ / \ / \
Xconectar - 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.
nser maior que 10?
