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
]]>