С компилятором брейкфук?

У меня есть базовая программа на C, которую я хочу преобразовать в язык brainfsck, но не могу найти ничего по этому вопросу. Я нахожу много конвертеров "брейкфак в С", но не наоборот. Я нашел C2BF, но не понимаю, как его использовать или если это то, что мне нужно.

2 ответа

Решение

C2BF - это C-программа, которая распространяется как C-исходный код.

Для сборки C2BF вам нужно установить svn, Gnu Make и yacc и flex. После того, как вы скомпилировали C2BF самостоятельно, он должен делать именно то, что вы ожидаете.

Если вы используете какой-то вкус Linux:

cd ${HOME}
svn co https://c2bf.svn.sourceforge.net/svnroot/brainfuck/c2bf/trunk c2bf
cd c2bf
sudo apt-get install bison flex # or yum install bison flex
YACC=bison make

должен дать вам компилятор в ${HOME}/c2bf/cc/c2bf-cc,

Если вы используете Windows, вы должны установить что-то вроде MinGW или cygwin для компиляции.

Я могу только порекомендовать использовать https://brainfuck.antosser.xyz/.
Это веб-сайт, который может скомпилировать легко читаемый код для Brainfuck. Это не C, но его синтаксис очень прост для изучения.

Например, печать всех чисел от 1 до 100, делящихся на 3, в десятичной системе будет выглядеть так:

      var i 3
var newl 10

#while i
  printdec i
  print newl

  add i 3

  #if i num 102
    set i 0
  #end
#end
#end

Компилятор очень оптимизирован и производит сильно сжатый код, такой как этот

      >>>>>>>>>+++>++++++++++<[<<<<<<<<<[-]>>[-]>>>>>[-]<<<[-]>>>>>[-<<<+>>>]<<<[->>>+<<<<<<<+>>>>]<<<<<[-
]>[-<+>]<[->>>>>>+[-<+>]<[->+>+<<]<++++++++++>>>[-<<<->>>]<<<[->+<]>[[-]<+>]<-[[-]>>[-]<<<<<+>>>]<<<
<]>[->>>>+<<<<]>>>>>[-<<<<<+>>>>>]<[->+<]>>[-]<[->+<]>[-<<<<+[->>+<<]>>[-<<+<+>>>]<++++++++++<<[->>-
<<]>>[->+<]>[[-]<+>]<-[[-]<[-]>>>+<<]>>>]<[-<+>]<<<[->>>+<<<]>>[-<<+>>]<<[->>+<<]>>[-<<+>>>>+<<]>>[-
<<+>>]<<[->>+<<<+>]<[[-]>++++++++[<<++++++>>-]<<.>]>>[-<+>]<[->+>+<<]>>[-<<+>>]<<[->>+<<<+>]<[[-]>++
++++++[>++++++<-]>.<<]>>>[-]<<++++++++[<<<<++++++>>>>-]<<<<.>>>>>>>>.<+++[-<<<+>>>]<<<[->>>+<<<<<<+>
>>]++++++++++[<++++++++++>-]<++<<[->>-<<]>>[->+<]>[[-]<+>]<-[[-]>>>>[-]<<<<]>>>>]

Другие вопросы по тегам