]]> ]]>

Boolfuck

Диалект языка программирования Brainfuck

Boolfuck — диалект 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

]]>

Работа программистам