gpt4 book ai didi

if-statement - 在 Brainfuck 中做一个 if(x==y) 语句

转载 作者:行者123 更新时间:2023-12-04 14:44:41 25 4
gpt4 key购买 nike

所以我正在开发一个程序,它读入一个文件,然后再次输出它,但我无法让程序停止在文件末尾接收输入。我希望它停在一个特定的字符,比如 '0' 或 '$' 或任何真正的字符,因为一个字符 NULL 无法读入我的 Brainf 解释器。这是到目前为止的代码:

>+[>,][<.]

问题始于 [>,]因为输入永远不能为 NULL 这个循环永远不会结束。

那么我怎样才能插入一个 if 语句来终止这个循环,如果它到达一个预先指定的结束字符呢?

最佳答案

以下代码与您的代码等效,只是它会在输入值为 1 时停止(在 ASCII 中不可打印)。 <循环之间是必需的,因为最后一个值为 0。

>+[+>,-]<[<.]
它在输入后递减值,检查它是否为 0,如果不是则循环返回。如果它循环回来,它必须再次增加指针以撤消减量。示例数组可能是:
00  02  H  e  l  l  o  _  W  o  r  l  d  00
^
然而, [<.]打印字符串的反向(后跟不可打印的 1)。可以通过将指针移动到开头并从那里向前移动来打印字符串本身,如以下代码所示:
>+[+>,-]<[<]>>[.>]
在此代码中, [<]当它到达索引 0 时停止, >>移动到索引 2(字符串开始),然后 [.>]输出字符,直到最后到达 0。
如果要使用不同的 ASCII 字符,例如空格 (32),请重复 +-在第一个循环中多次。 (警告:如果输入中的任何字符少于 32,此代码将导致值低于 0)。
>+[++++++++++++++++++++++++++++++++>,--------------------------------]<[<]>>[.>]

关于if-statement - 在 Brainfuck 中做一个 if(x==y) 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24857286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com