Roh*_*ala 5 esoteric-languages while-loop brainfuck
我在为codegolf.se实现brainfuck汇编程序时遇到了麻烦.我设法将一个字符串加载到内存中找到它的长度cat it out,打印字符串n次等,但我似乎无法将非小写数字加载到内存中.所以让我们采取以下循环执行一些魔法.(散列标记是调试标记.)
#,#[>#<[<]<<#+#>>>[>]#,#]<[<]
Run Code Online (Sandbox Code Playgroud)
它从指针512开始,并将字符串作为ascii值写入512之后的点
#,#[>#<[<]<<#+#>>>[>]#do{,(takes input and assigns it)}
while(input>=96/*Go arbitrarily to the right for this implementation but
make sure that the first non-lowercase number is stored at the index*/)#
//Also be sure to zero out any temporary cells used
<[<]
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,我如何实现这样的while循环,同时只使用512右边的空格作为存储并在以后清除它们.
对于那些好奇的人来说,这是我想在branfuck中解决的问题.
您的代码可以简化为
,[[<]<+>>[>],]<[<]
Run Code Online (Sandbox Code Playgroud)
(这<<+>>
可能是使用在线编译器忘记单元格 255 的结果)
并重复,产生输出操作:
>.[[<]<->>[>]<.>]<[<]
Run Code Online (Sandbox Code Playgroud)
如果您只想以您的方式使用空单元格,您可以这样做。但是您需要建立一些自己的协议来定义下一个单元格,例如使用以下单元格保存每个数据单元格,说明与下一个单元格的距离,如下所示:
[..., 104, 5, x, x, x, x, 108, 3, x, x, 102, 2...]
[..., 104 , 5 , x, x, x, x, 108 , 3 , x, x, 102 , 2 ...]
data pointer data pointer data pointer
Run Code Online (Sandbox Code Playgroud)
什么时候x
是任意的非零值(否则你会使用它)。这个实现有点像链表,但请注意,它会占用空间和代码。
将单元归零,或者您称之为清理它们,可以按照与您相同的方式完成[<]
- 通过使用[-]
. 这将减少单元格的值,直到达到 0,然后循环输出。当您到达末尾时,您可以向下迭代字符串 - 然后返回并清理每个单元格,直到到达开头(0
或您放置在那里的其他保留数字)。