Потік Змія, також відомий як кривої Госпер , є фрактальної кривої, зростає в геометричній прогресії за розміром з кожним порядку / ітерації процесу простий. Нижче наведено деталі про будівництво та кілька прикладів для різних замовлень:
Замовляйте 1 змії :
____
\__ \
__/
Замовити 2 змії :
____
____ \__ \
\__ \__/ / __
__/ ____ \ \ \
/ __ \__ \ \/
\ \ \__/ / __
\/ ____ \/ /
\__ \__/
__/
Замовити 3 змії :
____
____ \__ \
\__ \__/ / __
__/ ____ \ \ \ ____
/ __ \__ \ \/ / __ \__ \
____ \ \ \__/ / __ \/ / __/ / __
____ \__ \ \/ ____ \/ / __/ / __ \ \ \
\__ \__/ / __ \__ \__/ / __ \ \ \ \/
__/ ____ \ \ \__/ ____ \ \ \ \/ / __
/ __ \__ \ \/ ____ \__ \ \/ / __ \/ /
\ \ \__/ / __ \__ \__/ / __ \ \ \__/
\/ ____ \/ / __/ ____ \ \ \ \/ ____
\__ \__/ / __ \__ \ \/ / __ \__ \
__/ ____ \ \ \__/ / __ \/ / __/ / __
/ __ \__ \ \/ ____ \/ / __/ / __ \/ /
\/ / __/ / __ \__ \__/ / __ \/ / __/
__/ / __ \ \ \__/ ____ \ \ \__/ / __
/ __ \ \ \ \/ ____ \__ \ \/ ____ \/ /
\ \ \ \/ / __ \__ \__/ / __ \__ \__/
\/ / __ \/ / __/ ____ \ \ \__/
\ \ \__/ / __ \__ \ \/
\/ \ \ \__/ / __
\/ ____ \/ /
\__ \__/
__/
Будівництво
Розглянемо порядок 1 Потік змії будується зі шляху, що містить 7 країв і 8 вершин (позначено нижче. Збільшений для доцільності):
4____5____6
\ \
3\____2 7\
/
0____1/
Тепер для кожного наступного замовлення ви просто замінюєте краї на поворотну версію цього оригінального шаблону 1 замовлення. Використовуйте наступні 3 правила для заміни ребер:
1 Для горизонтального краю замініть його оригінальною формою так:
________
\ \
\____ \
/
____/
2 Для /
краю ( 12
у наведеній конструкції) замініть його на наступний поворотний варіант:
/
/ ____
\ / /
\/ /
/
____/
3 Для \
краю ( 34
і 67
вище) замініть його на наступний поворотний варіант:
/
/ ____
\ \ \
\ \ \
\ /
\/
Так, наприклад, виглядатиме замовлення 2 з вершинами від позначення порядку 1
________
\ \
________ \____ \6
\ \ / /
\____ \5___/ / ____
/ \ \ \
4___/ ________ \ \ \7
/ \ \ \ /
/ ____ \____ \2 \/
\ \ \ / /
\ \ \3___/ / ____
\ / \ / /
\/ ________ \/ /
\ \ /
\____ \1___/
/
0___/
Тепер для будь-якого вищого порядку просто розділіть поточний рівень на краї довжиною 1 /
, 1 \
або 2 _
і повторіть процес. Зауважте, що навіть після заміни загальні вершини між будь-якими двома послідовними ребрами все ще збігаються.
Виклик
- Вам потрібно записати функцію повної програми, яка отримує єдине ціле число
N
через аргумент STDIN / ARGV / function або найближчий еквівалент і друкує порядокN
потоку Snake на STDOUT. - Ціле вхід завжди більше, ніж
0
. - Не повинно бути провідних пробілів, які не входять до структури.
- Не повинно бути або пробілів, або достатньо пробілів, щоб залити шаблон, щоб повністю заповнити мінімальний обмежуючий прямокутник.
- Новий рядок не є обов'язковим.
Цікаві факти
- Flow Snakes - це гра в слова «Снігові пластівці», що ця картина нагадує для порядку 2 і вище
- Потік і Змії насправді відіграють певну роль у візерунку, оскільки візерунок складається з єдиного шляху, що протікає по всьому.
- Якщо ви помітили уважно, рисунок порядку 2 (і вище) складається з обертів візерунка 1 порядку, скручених на загальній вершині поточного та попереднього краю.
- Є варіант ASCII Flow Snakes, який можна знайти тут і в кількох інших місцях.
Це код-гольф, тому найкоротший код у виграші байтів!
Таблиця лідерів
Перший пост серії генерує таблицю лідерів.
Щоб відповіді відображалися, почніть кожну відповідь із заголовка, використовуючи такий шаблон Markdown:
# Language Name, N bytes
де N
розмір вашого подання. Якщо ви покращите свій рахунок, ви можете зберегти старі бали у заголовку, прокресливши їх. Наприклад:
# Ruby, <s>104</s> <s>101</s> 96 bytes