> <> , 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.