> <> , 56 байт
^
.
+
8
f
0
o
a
o
~
:
?
~
:
?
:
-
*
4
8
:
^
^
}
*
3
d
'
Спробуйте в Інтернеті! або перевірити всі мутації .
Як працює оригінальна програма (застаріла)
Перекладач починається у комірці (0, 0) . ^
задає напрямок вгору , тому вказівник інструкції (IP) обгортається до комірки (0, 20) .
'
активує рядовий режим: до наступного '
не зустрінеться наступне , всі символи під IP-адресою висуваються на стек. Те ж '
саме виявляється знову після обгортання, тому ми натискаємо
d3*}^^:84*=?~oao0f.^
IP приземляється на рівні (0, 19) , все ще йде вгору. Виконання d3*}
натискає 13 = 0xd , потім 3 , помножує обидва значення ( 39 / одна ціна ), потім обертає стек праворуч. Це залишає стек так.
'd3*}^^:84*=?~oao0f.^
Наступні дві інструкції ( ^
) в цьому моменті нічого не роблять.
:84*=
дублює верхню частину стека, висуває 8 і 4 , множує їх ( 32 / пробіл ), потім тестує дублюваний символ на рівність з простором . Для незмінної програми це завжди буде натискати 0 .
?
пропускає наступну інструкцію, якщо верхня частина стека хибна. Для оригінальної програми вона завжди є, тому ~
завжди пропускається.
oao
вискакує та друкує верхню частину стека, штовхає 10 / linefeed , потім з'являється та друкує linefeed .
Нарешті 0f.
переходить до комірки (0, 15) (нижній край ^
), починаючи з наступного символу на стеку.
Після того, як стек порожній, весь вихідний код був надрукований. :
не вдасться, і програма завершиться.
Як працюють мутовані програми (застарілі)
Копіювання будь-якого символу без передачі даних буде розширювати програму лише горизонтально. Оскільки програма виконується вертикально, ці додаткові інструкції ніколи не виконуються.
Дублювання будь-якої подачі ліній перед бутомостом ^
змістить осередки (0, 14) і (0, 15) на (0, 15) і (0, 16) . 0f.
тепер перейде до клітинки раніше самого нижнього ^
, що також є a ^
, тому програма не впливає на зсув.
Нарешті, будь-який дубльований символ передачі рядків також змінить рядок. Короткі лінії прокладені пробілами, тож 32 / пробіл буде вставлений у позицію стрічки передачі. 84*=
натисне 1 для пробілу, тому ?
не пропускає наступну інструкцію. У цьому випадку ~
з'являється та викидає простір , тож наступне o
буде надрукувати символ над простором .
0
і00
в CJam обидва вихідні0
.