Почему моя программа Hello World не работает? - PullRequest
2 голосов
/ 21 октября 2011

Итак, я написал эту программу вручную в BrainFuck :

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

, и она отображает именно то, что я хотел:

HELLO WORLD

Но потом я захотел, чтобыотображать HELLO WORLD пять раз подряд, поэтому я обернул его в цикл:

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

Я ожидал, что он будет иметь такой вывод:

HELLO WORLDHELLO WORLDHELLO WORLDHELLO WORLDHELLO WORLD

Но вместо этого он отображает это:

HELLO WORLDŠ˜˜ž@®ž¤˜ˆØÏääí`íöäÌ 00<€\<H0hY||‹ ³‹š|T

Что я делаю не так с моей петлей?Почему он не отображает HELLO WORLD пять раз подряд, как ожидалось?

1 Ответ

6 голосов
/ 23 октября 2011

Вы не зацикливаетесь на "HELLO WORLD", вы зацикливаетесь на коде, который его создает ...

У вас есть два варианта, либо обнулять все, когда вы возвращаетесь, используя [-]<, это работает с вашим текущим кодом, потому что он вернет элементы массива в их начальное состояние, и при повторном запуске вашего кода он будет иметь те же значения, то есть: </p>

http://ideone.com/GjAp8

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

или используйте это (не печатайте массив при его заполнении, подождите, пока он не будет создан, а затем сделайте это)

http://ideone.com/iWs8X

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