如何Brainfuck解释循环,使这段代码工作?



这可能听起来很愚蠢,但我需要帮助的大脑操

所以我用c#写了一个解释器,我试着在一个真实的代码(+[----->+++<]>+.+.)上使用我的解释器,它应该打印&;hi&;

但是while循环永远不会结束,因为第一个值永远不会回到0,这是有道理的,因为在每个循环结束时,第一个值永远不应该是0,因为它只是向下,1不能被-5整除,所以为什么这段代码在其他解释器中工作,什么逻辑使它在brainfuck中实际工作?

我不是在问我的解释器出了什么问题,我是在问脑残是如何解释这些代码的,所以我可以把它实现到我的解释器中。因为我没有试图弄清楚为什么这在我的解释器中不起作用,我试图弄清楚为什么这段代码应该首先工作,这样我就可以为更多的情况优化我的解释器。

在对代码进行了一些修改并分析了其他解释器中的值之后,我发现整数具有限制和最小值,这使得它能够正常工作。我把我的解释器代码改成这样来解释它们:

if (s == "+")
{
values[pos] += 1;
if (values[pos] > max) { values[pos] = min; }
}
if (s == "-")
{
values[pos] -= 1;
if (values[pos] < min) { values[pos] = max; }
}

解决了我的主要问题。

相关内容

最新更新