Комментарии 37
От же жесть… Спасибо!!!
Пригодится на парах… %)
Пригодится на парах… %)
+1
Мсье знает толк… :)
+11
Понеслась…
+3
НЛО прилетело и опубликовало эту надпись здесь
Мдемс… Ну, кто напишет первый интерпретатор брейнфака на CSS? :)
+15
А можно комментарии, к скрипту?
+11
В классическим brainfuck'е можно написать brainfuck на brainfuck'e?
+14
Ой спасибо за линк на сайт. Иногда подобного не хватает чтобы мозг разгрузить.
Еще юзаю fucking-great-advice.ru/ :)
Еще юзаю fucking-great-advice.ru/ :)
+1
Все-таки код немного вирвиглаз…
(я про баш)
(я про баш)
0
Интересно, написал ли кто-нибудь оптимизатор лучше, чем придумал когда-то я:
+2
Внимание! Ссылка на почту.ру, которая свою рекламу подсовывает и почему-то загружает яву. Я когда-то так делал: http://tronix286.pochta.ru/brainfk/
+1
«Brainf*ck» :)
+1
Я в брейнфаках не силен, но интерпретатор выглядит симпотично.
-3
Чтобы полностью соответствовать «классическому» Brainfuck'у по части переменных (возможные значения — 0..255, по остатку от 256) надо сделать примерно так:
#!/bin/bash
C="s[0]=0; p=0;"
while read -n1 c; do case $c in
\+) C="$C s[\$p]=\$((\${s[\$p]}+1));";
C="$C if [ \${s[\$p]} -eq 256 ];then s[\$p]=0;fi;";;
\-) C="$C s[\$p]=\$((\${s[\$p]}-1));";
C="$C if [ \${s[\$p]} -eq -1 ];then s[\$p]=255;fi;";;
\>) C="$C p=\$((\$p+1));";;
\<) C="$C p=\$((\$p-1));";;
\.) C="$C printf \\\\\$(printf '%03o' \${s[\$p]});";;
\,) C="$C read -n1 c; s[\$p]=\`printf '%d' \"'\$c\"\`;";;
\[) C="$C while [[ \${s[\$p]} > 0 ]]; do ";;
\]) C="$C done;";;
esac; done < $1;
eval $C
0
еще и номера ячеек. их 3000, поэтому нумерация от 0 до 2999:
простите мою «кривоту», но в sh не мастер.
#!/bin/bash
C="s[0]=0; p=0;"
while read -n1 c; do case $c in
\+) C="$C s[\$p]=\$((\${s[\$p]}+1));";
C="$C if [ \${s[\$p]} -eq 256 ];then s[\$p]=0;fi;";;
\-) C="$C s[\$p]=\$((\${s[\$p]}-1));";
C="$C if [ \${s[\$p]} -eq -1 ];then s[\$p]=255;fi;";;
\>) C="$C if [ \$p -eq 2999 ];then p=-1;fi;";
C="$C p=\$((\$p+1));";;
\<) C="$C if [ \$p -eq 0 ];then p=3000;fi;";
C="$C p=\$((\$p-1));";;
\.) C="$C printf \\\\\$(printf '%03o' \${s[\$p]});";;
\,) C="$C read -n1 c; s[\$p]=\`printf '%d' \"'\$c\"\`;";;
\[) C="$C while [[ \${s[\$p]} > 0 ]]; do ";;
\]) C="$C done;";;
esac; done < $1;
eval $C
простите мою «кривоту», но в sh не мастер.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Интерпретатор Brainfuck на Bash