,{-?>}-):(=?
#}<<.{?_<.<.<.<.<.
Введіть у вигляді значення байта , так, наприклад, введення !дає змію довжиною 33.
Спробуйте в Інтернеті!
Пройшло багато часу...
Пояснення
Швидкий ґрунтовник Brian & Chuck:
- Перший рядок програми - Брайан, другий - Чак.
- Брайан і Чак - два екземпляри, схожі на Brainfuck. Основна уловка полягає в тому, що програма Чак - це стрічка Брайана і навпаки. Головки стрічки / покажчики інструкцій починаються на першій комірці кожної стрічки, а виконання починається на Брайані.
- Щодо команд, то тут є кілька відмінностей. Тільки Брайан може використовувати
,(введення), а тільки Чак може використовувати .(виводити). Крім того <і >існує , {і }які переміщують головку стрічки до наступної нульовий осередку (або в разі {з лівим кінцем стрічки , якщо не нульовий осередки на шляху). Замість [...]цього єдиний керуючий потік - це той, ?який перемикає управління на інший екземпляр, якщо поточна комірка не дорівнює нулю. Перша виконана інструкція на іншій комірці - це після умови. І нарешті, _це лише псевдонім для нульових байтів, для зручності.
Тепер код. Брайан починає з цього:
,{-?
Він зчитує вхід у першу клітинку Чака, потім переміщує головку стрічки ліворуч {(нічого не робить зараз) та зменшує вхід -до перемикання керування Чаком, якщо значення все ще не дорівнює нулю. З цього починається основна петля. Потім Чак запускає цей біт:
}<<.{?
Це переміщує головку стрічки на Брайана до самого кінця, переміщує дві клітинки вліво на =та виводить її перед головкою стрічки до кінця вліво і перемикає управління назад на Брайана. Це, як правило, петлі працюють в B&C.
Після того, як вхід зменшиться до нуля, ?стрічка Брайана нічого не зробить. Потім Брайан виконує цю частину:
>}-):(=?
Не ):(=існує, тому власне код справедливий >}-?. Ми відсуваємо нульову комірку за допомогою >, переходимо до _с }, зменшуємо її, щоб зробити її не нульовою, і переходимо до Чука ?. Потім виконується останній біт на Чак:
<.<.<.<.<.
Це просто друкує п’ять символів перед Чак, тобто =(:)-. Зауважте, що нам потрібно друкувати інше, =оскільки основний цикл виконується лише N-1для введення разів N.