Pull to refresh

Comments 37

От же жесть… Спасибо!!!
Пригодится на парах… %)
Капитан Очевидность должен сделать в своей жизни три вещи: первую, вторую и третью. ©
UFO just landed and posted this here
Прирост брейнфака увеличен на 50%? =3
UFO just landed and posted this here
Слава Богу, не во всех блогах…
Мдемс… Ну, кто напишет первый интерпретатор брейнфака на CSS? :)
Ну что ж вы ниже пояса бьёте. Вот DSSSL и XSL ещё имеют шансы.
В классическим brainfuck'е можно написать brainfuck на brainfuck'e?
тогда это будет реальный брейнфак О_о
Да, можно. Есть готовые интерпретаторы brainfuck написанные на brainfuck.
Блин, я только хотел сесть поломать голову а тут такой облом =(
Согласно философии, мозг надо не ломать, а «иметь».
С чем Brainfuck удачно справляется! :)
Да, я лично писал.
Есть даже оптимизирующий компилятор awib
А можно написать на брейнфаке интерпретатор баша, а дальше понятно что сделать…
Ой спасибо за линк на сайт. Иногда подобного не хватает чтобы мозг разгрузить.
Еще юзаю fucking-great-advice.ru/ :)
Все-таки код немного вирвиглаз…
(я про баш)
а я-то уж подумал что про брейнфак
Интересно, написал ли кто-нибудь оптимизатор лучше, чем придумал когда-то я:

Внимание! Ссылка на почту.ру, которая свою рекламу подсовывает и почему-то загружает яву. Я когда-то так делал: http://tronix286.pochta.ru/brainfk/
Что? О чём вы вообще?
Это он не про вашу ссылку, а про свою )
У вас оптимизации очень простые и их мало, а я спрашивал написал ли кто-то лучше.
Я в брейнфаках не силен, но интерпретатор выглядит симпотично.
Чтобы полностью соответствовать «классическому» 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
еще и номера ячеек. их 3000, поэтому нумерация от 0 до 2999:
#!/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 не мастер.
Sign up to leave a comment.

Articles