脑干,116 112字节
>>>>,[[<]<<+>>>[>],]<[<]<+<[>>+<[-<-<+>>]<<++[->>+<<]>]>[-]>>[<[->.[-]<[->+<]<+[->+<]>>]++++++++++.[-]<[->+<]>>]
在线尝试!
安全的BF格式不会用遮盖单元格256
,不支持空字节。
如果风味支持负内存(保留4个字节),请删除最初的右箭头。
说明
该计划分为3个阶段:
Stage 1: >>>>,[[<]<<+>>>[>],]<[<]
Stage 2: <+<[>>+<[-<-<+>>]<<++[->>+<<]>]>[-]>>
Stage 3: [<[->.[-]<[->+<]<+[->+<]>>]++++++++++.[-]<[->+<]>>]
阶段1
在这个阶段,我们将所有字符放到磁带上,同时保持对字符数的计数。
这是此磁带abcdefghi
后面的输入磁带:
000 009 000 000 095 096 097 098 099 100 101 102 103
^
该009
是计数。
对于每个字符,我们将第一个零移动到左侧[<]
,然后将1加到count <<+>>>
,然后移动到最右边的零[>]
以准备下一个字符。
第二阶段
此阶段执行存储在第二个单元格中的长度的平方根。
它会一直减去1, 3, 5, 7, ...
直到数字达到零,同时还要检查迭代次数。
之所以有效,是因为平方数可以表示为1 + 3 + 5 + ...
。
第三阶段
将上面找到的长度的平方根表示为n
。
此阶段一次输出n
字符,然后输出换行符,直到清除磁带为止。