If statement 在Brainfuck中生成if(x==y)语句

If statement 在Brainfuck中生成if(x==y)语句,if-statement,brainfuck,esoteric-languages,If Statement,Brainfuck,Esoteric Languages,所以我正在编写一个程序,读入一个文件,然后再次输出,但是我很难让程序在文件末尾停止输入。我希望它停在一个特定的字符上,比如“0”或“$”或其他任何字符,因为一个字符的NULL不能读入我的brainf解释器。以下是迄今为止的代码: >+[>,][<.] +[>,][,]因为输入永远不能为空,所以这个循环永远不会结束 那么,如何插入if语句,如果循环达到预先指定的结束字符,该语句将终止循环?以下代码与您的代码等效,但当输入值为1(ASCII中不可打印)时,它将停止。以您的重要字符

所以我正在编写一个程序,读入一个文件,然后再次输出,但是我很难让程序在文件末尾停止输入。我希望它停在一个特定的字符上,比如“0”或“$”或其他任何字符,因为一个字符的NULL不能读入我的brainf解释器。以下是迄今为止的代码:

>+[>,][<.]
+[>,][,]
因为输入永远不能为空,所以这个循环永远不会结束


那么,如何插入if语句,如果循环达到预先指定的结束字符,该语句将终止循环?

以下代码与您的代码等效,但当输入值为1(ASCII中不可打印)时,它将停止。
以您的重要字符开始–我们选择
$
,因为它是ASCII 36:

++++++[->++++++<]>
如果不为零,则向前移动三次到
$
副本后的空单元格,然后无条件地向后移动,在输入为
$
时退出循环,否则将停留在
$
处,准备重新开始:

[>>>]<]
然后打印出来

>>>>>[.>>>>>]
总之,

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

这是一个有用的页面,我喜欢利用它

您需要的算法是#19(
x=x==y
)和#28(
if(x){code}
)或#30(
if(x){code1}else{code2}

检查两个单元格是否相等非常容易,因此我将在这里复制
if(x){code1}else{code2}
算法。
temp0
意味着移动到一个单元格用作临时变量。此特定代码确实要求
temp0
temp1
在内存中连续跟随
x

temp0[-]+
temp1[-]
x[
 code1
 x>-]>
[<
 code2
 x>->]<<
temp0[-]+
temp1[-]
x[
代码1
x> -]>
[<
代码2
x> ->]
[[->+>>>>+<<<<<]>>,[->+>+<<]
┌───┲━━━━━━━┱───────┬───────┬───┐ │ $ ┃ blank ┃ input │ input │ $ │ └───┺━━━━━━━┹───────┴───────┴───┘
<[->>-<<]>>
[>>>]<]
>>[-]<<<<<[<<<<<]
>>>>>[.>>>>>]
++++++[->++++++<]>
[[->+>>>>+<<<<<]>>,[->+>+<<]<[->>-<<]>>[>>>]<]
>>[-]<<<<<[<<<<<]>>>>>[.>>>>>]
temp0[-]+
temp1[-]
x[
 code1
 x>-]>
[<
 code2
 x>->]<<