COW
Диалект языка программирования BrainfuckCOW — эзотерический язык программирования, созданный Sean Heber в 2003 году на основании языка Brainfuck. В отличие от многих диалектов Brainfuck, команды COW похожи, но не идентичны командам последнего. Всего в языке 12 команд, выражающихся мычанием в разных регистрах; кроме мычания, каждой команде соответствует числовой код:
-
0 moo
: вернуться к парной командеMOO
и продолжить выполнение с нее; -
1 mOo
: сдвинуть указатель данных на одну ячейку влево (BF —<
); -
2 moO
: сдвинуть указатель данных на одну ячейку вправо (BF —>
); -
3 mOO
: выполнить значение в текущей ячейке как команду с соответствующим кодом; значения больше 11 и 3 считаются инвалидными и прекращают выполнение программы; -
4 Moo
: если значение текущей ячейки равно 0, прочитать символ и поместить в ячейку его ASCII-код (BF —,
), иначе вывести значение в ячейке как символ (BF —.
); -
5 MOo
: уменьшить на 1 значение в текущей ячейке (BF —-
); -
6 MoO
: увеличить на 1 значение в текущей ячейке (BF —+
); -
7 MOO
: если значение текущей ячейки ноль, пропустить следующую команду и перейти на команду, следующую за парнойmoo
; иначе продолжать выполнение; -
8 OOO
: обнулить значение в текущей ячейке (BF —[-]
); -
9 MMM
: если регистр пуст, скопировать в него значение текущей ячейки, иначе скопировать в ячейку содержимое регистра и очистить регистр; -
10 OOM
: напечатать значение текущей ячейки как число; -
11 oom
: прочитать число и поместить его в текущую ячейку.
Следует отметить, что команды MOO
и moo
работают не так, как [
и ]
— при поиске парной команды, закрывающей цикл, команда, следующая сразу за началом цикла, пропускается.
Ссылки:
Примеры:
Hello, World!:
Пример для версий EsCo 0.511 (Brainfuck)Пример на COW.
MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MOO moO MoO moO MoO MoO moO MoO MoO MoO
moO MoO MoO MoO MoO moO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO MoO MoO moO MoO
MoO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO
MoO MoO MoO MoO MoO moO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO moO MoO MoO MoO
MoO MoO MoO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
MoO moO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO mOo mOo mOo mOo mOo
mOo mOo mOo mOo mOo mOo mOo mOo MOo moo moO moO moO moO moO moO moO moO MOo MOo
MOo MOo MOo MOo MOo MOo Moo moO moO moO MOo MOo MOo MOo MOo MOo MOo MOo MOo Moo
MoO MoO MoO MoO MoO MoO MoO Moo Moo moO MOo MOo MOo MOo MOo MOo MOo MOo MOo Moo
mOo mOo mOo mOo mOo mOo mOo MOo MOo MOo MOo MOo MOo Moo mOo MOo MOo MOo MOo MOo
MOo MOo MOo Moo moO moO moO moO moO MOo MOo MOo Moo moO moO moO Moo MoO MoO MoO
Moo mOo Moo MOo MOo MOo MOo MOo MOo MOo MOo Moo mOo mOo mOo mOo mOo mOo mOo MoO
Moo
Числа Фибоначчи:
Пример для версий EsCo 0.511 (Brainfuck)Пример на COW. Аналогичен этому примеру, но вывод чисел на печать существенно упрощается за счет команды OOM
; фактически, даже с более длинными командами пример лаконичнее исходного.
MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
c1v44 : ASCII code of comma
moO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
c2v32 : ASCII code of space
moO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
c3v11 : quantity of numbers to be calculated
moO c4v0 : zeroth Fibonacci number (will not be printed)
moO MoO c5v1 : first Fibonacci number
mOo mOo c3 : loop counter
MOO block : loop to print (i)th number and calculate next one
moO moO OOM c5 : the number to be printed
mOo mOo mOo mOo Moo moO Moo c1c2 : print comma and space
block : actually calculate next Fibonacci in c6
moO moO MOO moO moO MoO mOo mOo MOo moo c4v0 : move c4 to c6 (don't need to preserve it)
moO MOO moO MoO mOo mOo MoO moO MOo moo c5v0 : move c5 to c6 and c4 (need to preserve it)
moO MOO mOo MoO moO MOo moo c6v0 : move c6 with sum to c5
mOo mOo mOo MOo c3 : decrement loop counter
moo
mOo mOo MoO MoO Moo Moo Moo c1 : output three dots
Комментарии
]]>blog comments powered by Disqus
]]>