Представьте себе следующие диаграммы как наборы вертикальных пересекающихся трубок.
1 2 1 2 1 2 3 4
\ / \ / \ / \ /
X | | |
/ \ / \ / \ / \
2 1 1 2 | X |
\ / \ /
X X
/ \ / \
3 1 4 2
На самой левой диаграмме 1
и 2
скользят вниз по соответствующим слешам, пересекаются X
и выходят с противоположных сторон от того места, где они начинались.
Это та же идея на средней диаграмме, но это |
означает, что пути не пересекаются, поэтому ничего не меняется.
Крайняя правая диаграмма показывает более сложную маршрутизацию труб, которая 1 2 3 4
переходит в 3 1 4 2
.
Цель
Ваша цель в этой задаче для игры в гольф кода состоит в том, чтобы нарисовать эти «диаграммы маршрутизации труб» с учетом такой перестановки, как 3 1 4 2
. Самая короткая программа в байтах победит.
Детали
- Входные данные поступают из stdin как любая перестановка чисел от 1 до n, разделенных пробелами, где n - положительное целое число. Вы можете предположить, что все входные данные правильно сформированы.
Вывод диаграммы маршрутизации идет в стандартный вывод.
- «Сброс» чисел от 1 до n по порядку в верхнюю часть диаграммы должен привести к тому, что входная перестановка выходит внизу. (Верх и низ всегда являются слоями слеша.)
- Диаграмма не должна быть оптимально маленькой. Это может быть столько уровней, сколько необходимо, если это правильно.
- Диаграмма должна содержать только символы
\/ X|
и символы новой строки (без цифр). |
всегда следует использовать на самых внешних пересечениях, так как использованиеX
не имеет смысла.- Несколько начальных или конечных пробелов в порядке, если диаграмма правильно выстроена.
Примеры
Ввод 3 1 4 2
может производить (так же, как выше)
\ / \ /
| |
/ \ / \
| X |
\ / \ /
X X
/ \ / \
Вклад 1
может производить
\
|
/
|
\
|
/
Вклад 3 2 1
может производить
\ / \
X |
/ \ /
| X
\ / \
X |
/ \ /
Вклад 2 1 3 4 6 5
может производить
\ / \ / \ /
X | X
/ \ / \ / \
X
подключиться напрямую к |
тому, как это /
делает? Другому X
?
row of slashes
, row of X's and |'s
, row of slashes
, row of X's and |'s
, ... формат.
n
быть больше 10?