>>>>>>-[[->>>+<<<]------>>>-]<<<[<<<]+[+[>>>]<<<->+[<[+>-]>[-<<<<->+>>------>>]<<<<]>>-[<<<].>>>-]
哪个打印准确
298333629248008269731638612618517353495058861384016275770860733328251135402804732197446995616017112134460464130233444058136509123809012106419446593183683387659250431692751255099808162970657410517657862174602556590616568690423540284801267472920128909691902547970614008613488242333460665145840144517097342073878746293059960326132795671583153307437896728515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
250255
在此Brainfuck答案中功劳归功于@hvd,因此请确保对他进行投票!
说明:
我打算自己写一个解释,但是意识到@hvd的解释已经很明确了,所以我在这里引用它:
>>>>>>
需要留一点工作空间。
-
产生255(因为有包装单元时0-1 = 255)。
[[->>>+<<<]------>>>-]
将其转换为255个值250的副本,得到如下所示的磁带:
0 0 0 0 0 0 250 0 0 250 0 0 ... 250 0 0 [0]
<<<[<<<]+
向后移动数据指针并完成初始数据:
0 0 0 [1] 0 0 250 0 0 250 0 0 ...
然后是循环:[+...-]
最初将1设置为2,然后在循环结束时将其设置回1。当循环主体已将2设置为1时,循环终止。
现在,数字2 250 250 250 ... 250以基数250表示一个计数器,每个数字都比它所表示的数字大一。
[>>>]<<<
一直向右移动。由于每个数字都由非零数字表示,因此这是微不足道的。
->+[<[+>-]>[-<<<<->+>>------>>]<<<<]>>-
将计数器减1。从最后一位开始:该位递减。如果仍然是积极的,我们就完成了。如果变为零,则将其设置为250,然后继续前面的数字。
[<<<].>>>
将指针移到最左边的数字之前,这是打印NUL字节的好时机。然后重新定位到最左边的数字,看看是否完成。
为了验证正确性,改变初始-
到+
到打印250 1 NUL字节,++
为250 2,等等。
+[.]
我赢了吗?:P