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
好处是除了本次指针自增时值的位置有变化,其余的位置的值都没变。