Шестикутник, 37 35 34 31
10"+}(=${";<$<1}42/.0@_=<>\;>(_
Розширено:
1 0 " +
} ( = $ {
" ; < $ < 1
} 4 2 / . 0 @
_ = < > \ ;
> ( _ . .
. . . .
Спробуйте в Інтернеті
В основному, є дві для циклів відліку від десяти до нуля, виведення зірочки на внутрішній цикл і новий рядок на зовнішній петлі.
Пояснення:
Ця програма складається з трьох основних частин: ініціалізація пам'яті, цикл, який друкує десять зірочок, і цикл, який друкує новий рядок. Цикл, який друкує новий рядок, також містить цикл, який друкує зірочки.
По-перше, код виконує повністю лінійну ініціалізацію пам'яті. Код працює як: 10"+}42
. Це встановлює пам'ять сусідніх країв таким чином:
10 \ / 10
|
42
42 - код ASCII для символу зірочки, і дві десятки будуть використовуватися як наші лічильники циклів. Слід зазначити, що вказівник пам'яті в даний час спрямований від двох десятків, тому переміщення назад поставить нас на одну з десятків.
Далі починаємо цикл друку зірочок. Лінійно, код виглядає наступним чином : ;".._(
. Це виводить зірочку, переміщує вказівник пам'яті назад і вліво і, нарешті, зменшує значення там. Після однієї ітерації пам'ять виглядатиме так:
10 \ / 9
|
42
Потім ми потрапляємо на стан циклу: крайній лівий зліва >
. Якщо край, який ми щойно зменшили, все-таки позитивний, ми підстрибуємо та виконуємо a, {
щоб повернути нас назад на 42. Потім ми натискаємо на a $
і повертаємося до початку петлі друку ;
, пропускаючи <
. Якщо значення було нульовим, ми переходимо до іншого циклу.
Зовнішній цикл починається зі скидання недавно нульового краю пам'яті до десяти (це 10
код у коді, що йде на південний захід). Потім ми роздруковуємо цю десятку як символ ASCII, що є новим рядком. Далі ми переходимо на інший край пам'яті і зменшуємо його , {(
а потім виконати те , що становить купу Без операційне: =${_=
. Тепер, після однієї ітерації цього циклу, пам'ять виглядатиме так:
9 \ / 10
|
42
Цього разу пам’ять звернена назовні від краю, де зберігається дев'ять на наведеній вище схемі. Далі ми виконуємо функцію, <
яка виступає умовою циклу для зовнішньої петлі. Якщо значення було не нульовим, ми відскакуємо від деяких дзеркал, після чого знову почнемо виконувати змістовні вказівки після введення вершини шестикутника на "
рухомий південний захід. Це змушує нас рухатись назад і вліво, на 42 знову, але обличчям досередини. Потім =
перевертає наш напрямок, скидаючи стан належним чином, щоб знову почати внутрішню петлю. Якщо для краю було встановлено нуль, покажчик інструкцій продовжує невелику пригоду, яка нічого не робить, поки не вийде з програми.
Пригода починається з вказівника, що прямує на північний схід, небезпечно нехтуючи безпекою кардинальних напрямків. Він сміливо ігнорує дзеркало, яке узгоджується з його напрямком ( /
) і героїчно стрибає з батута ($
) повністю ухиляючись від смертельної пастки іншого, абсолютно ідентичного батута. Виглядаючи на порожнечу неініціалізованих шестигранних країв, вказівник, не замикаючись ні на мить, додає два порожніх ребра, з якими стикається разом, встановлюючи поточний край до їх суми: 0 (край заздалегідь був фактично нульовим, але вказівник любить повірте, це було досить важливо). Оскільки край дорівнює нулю, вказівник робить розворот наліво на дорозі, в’їжджаючи в таємничий ліс (з шестикутників). Там вона опиняється дезорієнтованою, рухаючись вперед і назад і вперед, поки не звивається на тому самому місці пам’яті, що і почалося. Думаючи, що проблема повинна полягати в тому, що поточний край був встановлений на нуль востаннє, покажчик сміливо заводить a1
в поточний край. Потім шляхетний вказівник досліджує інший шлях, прокладений ... пасткою! Поточний край зменшується і повертається до нуля! Вказівник, запаморочений шокуючим поворотом подій, натикається назад у пастку, встановлюючи поточний край на негативний. Вражений вказівник намагається повернутися до порівняно приємного лісу, лише помітивши, що оскільки нинішній край не є позитивним, шляхи знову змістилися, і вказівник виявляється, що йде в печеру. А під печерою я маю на увазі гирло гігантського шестикутного хробака. Безпорадна, вказівник проклинає сексуальність своїм вмираючим диханням. Також програма закінчується.