gpt4 book ai didi

while-loop - 在brainfuck中高效实现while循环

转载 作者:行者123 更新时间:2023-12-04 21:35:48 25 4
gpt4 key购买 nike

我在为 codegolf.se 实现一个笨拙的汇编程序时遇到了麻烦。我设法将一个字符串加载到内存中,找到它的长度,打印字符串 n 次等,但我似乎不能只将非小写数字加载到内存中。因此,让我们采用以下循环来执行一些魔法。 (哈希标记是调试标记。)

#,#[>#<[<]<<#+#>>>[>]#,#]<[<] 

它从指针 512 开始,并将字符串作为 ascii 值写入 512 之后的点

现在,如果(无论出于何种原因)我希望去掉小写字符,它会在伪 BF 中看起来像这样。
#,#[>#<[<]<<#+#>>>[>]#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
<[<]

现在我的问题是,如何在仅使用 512 右侧的空格作为存储并稍后清除它们的同时实现这样的 while 循环。

对于那些好奇的人, this是我希望在 branfuck 中解决的问题。

最佳答案

您的代码可以简化为

,[[<]<+>>[>],]<[<]

( <<+>> 可能是使用忘记单元格 255 的在线编译器的结果)

并重复,以产生输出操作:
>.[[<]<->>[>]<.>]<[<]

如果你想使用 只有空单元格以你的方式,你可以做到。但是您需要建立自己的一些协议(protocol)来定义下一个单元格,例如将每个数据单元格保存为以下单元格,说明到下一个单元格的距离,如下:
[..., 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

x是一些任意的非零值(否则你会使用它)。这个实现有点像链表,但请注意它是 空间和代码昂贵 .

将单元格归零 ,或者您称之为清洁它们,可以按照与 [<] 相同的方式进行。 - 通过使用 [-] .这将减少单元格的值,直到它达到 0 - 然后将循环输出。您可以在字符串结束时向下迭代字符串 - 并在清理每个单元格时返回,直到您到达开头( 0 或您放在那里的其他保留数字)。

关于while-loop - 在brainfuck中高效实现while循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38680267/

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