作为我的brainf * ck实现的调试器/测试程序,我创建了以下计数循环:
+[[>+]+]
使用单字节,包装单元格和带有环绕的30k单元格,这会创建一个无限计数循环。它将每个单元格设置为1,然后将每个单元格设置为2,等等。
我的问题是,当它达到255时,内部循环将单元格递增为0,然后外部循环立即将其递增为1。当它溢出时,它就像一个“双步”,而不是一步。这是我可以通过这个紧凑的程序让循环无限继续的唯一方法。
每个单元格的计数为0 -> 1 -> 2 ... 254 -> 255 -> 1 ...
虽然我希望它去0 -> 1 -> 2 ... 254 -> 255 -> 0 -> 1 ...
当前单元格为零时,很难继续循环。我玩过相同主题的变体,但没有一个能够恰到好处。
这个特定的程序只是一个简单的测试计数程序,但是对我未来的程序真正有用的是知道如何反转循环条件,就像我需要使这个计数循环工作一样。
答案 0 :(得分:4)
尝试:
+[[>+]>[+>]+]
在第一个内循环之后,我们知道数据为0,后跟一堆255。移动到下一个单元格并将它们全部递增,直到我们回到开始。然后递增第一个单元格并从头开始。
答案 1 :(得分:1)
我昨晚考虑的另一种可能性,虽然它与你的要求有点不同:
-[[-]>-]
它与原始尺寸相同,但倒计时。它将每个单元格从255循环到零,但一次只修改一个单元格。我想我会添加它,因为它是一个有趣的短循环,可用于测试。
当然,您可以通过仅使用+或仅使用 - 。
来使这些循环中的任何一个完全向上或向下计数