用BF写一个根据位置值实现指针自增的代码

BF代码:根据位置值实现指针自增

BrainFuck:
实现指针会根据目前位置存储的值来自增
比如*[4]=8,则指针会移动到[12],即[4+8]

目前位置[n]的前3个位置[n-1][n-2][n-3]需要为0以便转移数据
代码:

>[<<<<+>>>>-]<[>+<-]>-<<<[>+<-]>+>>[>[<<<<+>>>>-]<[>+<-]>-<<<<<[>>>>+<<<<-]>>>>><<<[>+<-]>+>>]<<<<

代码解释:

[<<<<+>>>>-]:[n]位置向后一位到[n+1],若[n+1]不为零,则[n-3]=[n+1],[n+1]=0
<[>+<-]>-:此时[n+1]=0,让[n+1]=[n],[n]=0,然后[n+1]的值减少1

<<<[>+<-]>+>>:到[n-2]位置,让[n-1]=[n-2],[n-2]=0,然后[n-1]的值加1,这是为了记录走了多少步

[>[<<<<+>>>>-]<[>+<-]>-<<<<[>>>>+<<<<-]>>>><<<[>+<-]>+>>]:这里是把之前的步骤加了一个循环,可以发现此时指针每向右移动一位位置上的值就减1,这个过程会持续到这个值为0
不过这里额外加了一部分代码<<<<<[>>>>+<<<<-]>>>>>:是为了将上一步[n-3]的值物归原主到上一步[n+1]的位置上,并将指针归位到现在的[n+1](每一步比上一步加1)

<<<<:从第二步开始,每一步会把前一步错位的数据放回原位,所以最后一步,指针指到的位置[n+1]上一步储存的值,现在在[n-3]里,现在[n-1]的值是步数,现在[n-2]、[n]和[n+1]的值为0

好处是除了本次指针自增时值的位置有变化,其余的位置的值都没变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值