Boolfuck
Диалект языка программирования BrainfuckBoolfuck — диалект Brainfuck, который оперирует не байтами, а битами. В отличие от Smallfuck, он сохраняет команды ввода-вывода, поэтому вполне пригоден к использованию, хотя еще более неудобен, чем Brainfuck. Команды языка:
-
+
: инвертировать бит в текущей ячейке (команда отличается от Smallfuck); -
>
: сдвинуть указатель данных на один бит вправо; -
<
: сдвинуть указатель данных на один бит влево; -
[
: “начало цикла”; -
]
: “конец цикла”; -
,
: прочитать бит из потока ввода; -
;
: записать бит в поток вывода (команда отличается от Brainfuck).
Диалект оперирует битами, а потоки ввода-вывода — байтами (символами). Это противоречие разрешается следующим образом: символы читаются/пишутся побитово, в порядке little-endian: от младших к старшим.
Еще одно отличие от Brainfuck — лента памяти бесконечна в обе стороны. Программы на Brainfuck могут быть переведены на Boolfuck (но не наоборот) следующим соответствием команд:
-
+
->>[>]+<[+<]>>>>>>>>>[+]<<<<<<<<<
-
-
->>>>>>>>>>+<<<<<<<<+[>+]<[<]>>>>>>>>>[+]<<<<<<<<<
-
>
->>>>>>>>>>
-
<
-><<<<<<<<<
-
[
->>>>>>>>>>+<<<<<<<<+[>+]<[<]>>>>>>>>>[+<<<<<<<<[>]+<[+<]
-
]
->>>>>>>>>>+<<<<<<<<+[>+]<[<]>>>>>>>>>]<[+<]
-
.
->>;>;>;>;>;>;>;>;<<<<<<<<
-
,
->>,>,>,>,>,>,>,>,<<<<<<<<
Boolfuck был изобретен Sam Hughes в 2006 году.
Ссылки:
Примеры:
Hello, World!:
Пример для версий EsCo 0.511 (Brainfuck)Пример для Boolfuck.
H ;;;+;+;;+;+;
e +;+;+;+;;+;;+;
l ;;+;;+;+;;+;
l ;;+;;+;+;;+;
o +;;;;+;+;;+;
comma ;;+;;+;+;+;;
space ;;;;;+;+;;
W +;;;+;+;+;+;+;
o +;;;;+;+;;+;
r ;+;+;;+;;;+;
l ;;+;;+;+;;+;
d ;;+;+;;+;;+;
! +;+;;;;+;+;;
\n ;+;+;+;
Комментарии
]]>blog comments powered by Disqus
]]>