这是一个41个字符的程序,该程序最终会停止运行,并留出多个等于1的10↑(10↑28)个连续单元(因此,执行的指令数要大得多):
>+>+>+>+[->[>]+[->[>]+[->[>]+[<]+<]+<]+<]
如果我没记错的话,那就是以下程序的BF变体语言的正确翻译,该语言对每个存储单元都使用一个位(即,单元内容为0..1而不是0..255,所以为“ +”只是简单地翻转位值):
>+>+>+>+[+>[>]+[+>[>]+[+>[>]+[<]+<]+<]+<]
后一个程序产生的精确值(相邻1位的数量)为
3 * (2 ↑ 118842243771396506390315925503 - 1) + 1.
上面的程序初始化并计算一个增长为2↑↑x的函数(用
Knuth向上箭头表示)。初始化和计算一个像2↑
23 x 一样增长的函数的BF型变体程序的类似转换提供了以下256个字符的程序:
>+>+>+>+>+>+[->[>]+[->[>]+[->[>]+[->[>]+[->[>]+[->[>]+[->[>]+[->[>]+[->[>]+[->[>]+[->[>]+[->[>]+[->[>]+[->[>]+[->[>]+[->[>]+[->[>]+[->[>]+[->[>]+[->[>]+[->[>]+[->[>]+[->[>]+[->[>]+[<]+<]+<]+<]+<]+<]+<]+<]+<]+<]+<]+<]+<]+<]+<]+<]+<]+<]+<]+<]+<]+<]+<]+<]+<]+
最终停止,剩下超过2↑ 23 6个等于1的相邻单元格(因此,步数远远超过此数)。
NB-1:2↑ 23 6是一个“不可思议的大”数字;例如,即使2↑ 4 6 = 2↑↑↑↑6已经超过了用于计算Graham数的序列中的第一项(3↑↑↑↑3)。
NB-2:我认为对于BF程序来说,使用256个字符足以初始化和计算一个输出大于Graham数的函数-如果我发现时间,也许我会尝试写一个。
NB-3:如果有人对上述程序的起源感兴趣,这里有一些“ Brainf * ck F”的编程资源,其中包括各种用Python编写的程序。(“ Brainf * ck F”(或简称为“ F”,我称之为Smallf * ck esolanguage 的图灵完备变体。)我现在刚刚上传了这些文件,这些文件已经离线了几年,现在链接的网页只是一个“文件柜”-有关上述程序的详细讨论,请参见文件Busy_Beavers.txt。