2

所以,我在BrainFuck中手写了这个程序:

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

它完全显示了我想要的:

HELLO WORLD

但后来我想让它HELLO WORLD连续显示五次,所以我把它包装在一个循环中:

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

我希望它有这个输出:

HELLO WORLDHELLO WORLDHELLO WORLDHELLO WORLDHELLO WORLD

但它改为显示:

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

我的循环做错了什么?为什么它HELLO WORLD不像预期的那样连续显示五次?

4

1 回答 1

6

您不是在循环“HELLO WORLD”,而是在循环创建它的代码......

您有两个选择,或者在您使用 [-]< 移回时将所有内容归零,这适用于您当前的代码,因为它将数组元素返回到初始状态,并且当您重新运行代码时,它将具有相同的值, IE:

http://ideone.com/GjAp8

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

或使用它(不要在填写数组时打印它,等到它被创建然后再做)

http://ideone.com/iWs8X

+++++++++++++++++[>++++>++++>++++>++++>++>+++++>++++>++++>++++>++++<<<<<<<<<<-]
>++++>+>++++++++>+++++++++++>-->++>+++++++++++>++++++++++++++>++++++++>
<<<<<<<<<<
 +++++[>.>.>..>.>.>.>.>.>.>.<<<<<<<<<<-]
于 2011-10-23T09:16:15.013 回答