Questions tagged «busy-beaver»

繁忙的海狸在必须停止的约束下,最大化了计算模型的某些属性(例如执行时间,内存使用量,输出长度)。

3
Manufactoria:生成最慢的接收程序
编写一个Manufactoria程序,该程序将接受空的输入磁带。但是请不要快做!我的意思是,快速编写程序,但不要让它快速运行。程序越慢,越好,只要它最终终止即可。下面的示例程序采用3:51(模拟器报告的“总时间”)。 http://pleasingfungus.com/Manufactoria/?lvl=36&code=g12:5f3;r9:8f1;p12:9f3;c13:9f0;r11:9f0;r10:9f0;r9:9f1;b11:8f0;b10:8f1 ; r9:7f2; c10:7f2; c11:7f2; c12:7f3; q12:8f3; y13:8f2; y14:8f2; y15:8f1; y15:7f0; y14:7f0; y13:7f0; g12:6f3;&ctm = Slow_Accepter!; Generate_the_slowest_possible_accepting_machine;:; 7; 3; 0 ; 您的程序从空磁带开始。它必须乱涂一点,但最终会到达输出平方。如果需要,可以将数据保留在磁带上。7x7 Manufactoria板上最慢的程序胜出! 您的右箭头键是您的朋友,它可以加快模拟器的速度。 破坏模拟器的奖励积分!

3
打高尔夫球的数字大于装载机的数字
作为输出量超过Graham数和Golf数大于TREE(3)的最短终止程序的后续程序,我提出了一个新的挑战。 装入程序的数量非常大,很难解释(因为它本身是具有灵活目标的代码高尔夫练习的结果)。有一个定义和解释在这里,但自我封闭的目的,我将试图在这个帖子后面解释它。 Ralph Loader所使用的算法可产生有史以来最多的(可计算的)算法之一!实际上,Loader的号码是Googology Wiki上最大的“可计算”号码。(“可计算”数字是指根据计算定义的数字。)这意味着,如果答案以有趣的方式生成的数字大于Loader的数字(即不只是Loader的数字+1),您可以在谷歌历史!话虽如此,产生类似Loader的number + 1之类的程序绝对是这个问题的有效答案和竞争者。只是不要期望任何名气。 您的工作是创建一个终止程序,该程序产生的数字大于 Loader的数字。这是代码高尔夫球,所以最短的程序会获胜! 您不允许输入。 您的程序最终必须确定性终止,但是您可以假定计算机具有无限的内存。 您可能会假设您的语言的数字类型可以包含任何有限值,但是需要解释一下它在您的语言中的确切工作方式(例如:浮点数具有无限精度吗?) 不允许将无穷大作为输出。 数字类型的下溢引发异常。它不会环绕。 您需要提供一个解释,说明为什么您的电话号码如此之大以及代码的版本不正确,以检查您的解决方案是否有效(因为没有计算机具有足够的内存来存储Loader的电话号码)。 因此,这里是装载机编号的说明。有关更精确的详细信息,请参见http://googology.wikia.com/wiki/Loader%27s_number及其链接。特别是,它包含一个程序,该程序可以准确地生成Loader的编号(根据定义)。 该结构的微积分本质上是一种编程语言,它的特殊性质。 首先,每个句法有效的程序都会终止。没有无限循环。这将非常有用,因为这意味着如果我们运行任意的构造程序演算,我们的程序将不会卡住。问题在于,这意味着构造的演算尚未完成图灵的计算。 其次,在非图灵完整语言中,它是最强大的语言之一。本质上,如果您可以证明图灵机在每个输入上都将停止,则可以在构造演算中模拟该功能的函数。(这并不能完成巡视,因为您无法证明正在停止的巡回机器已经停止。) 装入程序的编号本质上是用于构造演算的忙碌的海狸编号,由于所有coc程序均终止,因此可以计算该编号。 特别是,loader.c定义了一个名为的函数D。大约D(x)在所有小于的位串上进行迭代x,将它们解释为coc程序,运行语法上有效的程序,并将结果(也将是位串)连接起来。它返回此串联。 加载程序的编号为D(D(D(D(D(99)))))。 来自Googolology Wiki的更具可读性的代码副本 int r, a; P(y,x){return y- ~y<<x;} Z(x){return r = x % 2 ? 0 : 1 + Z (x / 2 );} L(x){return x/2 >> Z(x);} …

30
从最少的输入获得最大的输出
显然,代码打高尔夫球就是要充分利用最少的代码。谁真正关心实际输出是多少? 尽管我们面临着最高输入输出比的挑战,但这是在给定代码长度的情况下要求最有限和确定性输出的要求。具有讽刺意味的是,这个挑战不是代码高尔夫。 规则: 编写三个独立的片段(不是完整的程序/功能)。 片段必须使用相同的语言。 得分是输出字节的总数。 输出可以是结果,STDOUT等形式。 这些片段可能不会引起任何错误。 这些片段可能导致不同形式的输出。 尾随换行符不计算在内。 第一个代码段必须为1个字节或产生至少1个字节输出的最小长度。 第二个片段必须比该片段长一个字节。 第三段必须比第一个长两个字节。

3
最长的非重复生命游戏序列
给定正整数N,请确定N x N网格上的起始模式,该模式在“人生博弈”规则下产生最长的非重复序列,并以固定模式(长度为1的循环)结束,并在圆环上播放。 目标不是最短的程序,而是最快的程序。 由于世界是有限的,您最终将最终陷入循环,从而重复一个已经访问过的状态。如果此循环的周期为1,则起始模式为有效候选者。 输出:起始模式和序列中唯一状态的总数(包括起始模式)。 现在,1x1圆环是特殊的,因为一个细胞可能被认为与自己相邻,但实际上,这没有问题,单个活细胞在两种情况下都只会死(拥挤或孤独)。因此,输入1产生一个长度为2的序列,该序列是一个存在的单元,然后永远死亡。 这个问题的动机是,它类似于忙碌的海狸函数,但由于我们的内存有限,因此它肯定不那么复杂。这也将是包含在OEIS中的一个很好的顺序。 对于N = 3,序列长度为3,左侧的任何图案都将到达完全黑色的3x3正方形,然后消失。(删除属于1周期一部分的所有模式)。

3
协和的困境
背景 该旅行商问题(TSP)要求在最短的电路访问城市的指定集合。出于这个问题的目的,城市将是平面中的点,城市之间的距离将是通常的欧几里得距离(四舍五入到最接近的整数)。赛道必须“往返”,这意味着它必须返回出发城市。 在协和TSP求解器可以解决旅行推销员问题的情况下,准确和速度远远超过人们所期望的。例如,协和飞机能够精确地求解85,900点实例,其中的一部分如下所示: 但是,即使对于协和飞机,某些TSP实例也会花费太长时间。例如,没有人能够解决基于Mona Lisa的100,000点实例。(如果您能解决的话,将提供1,000美元的奖金!) Concorde 可作为源代码或可执行文件下载。默认情况下,它使用内置的线性程序(LP)求解器QSopt,但它也可以使用更好的LP求解器,例如CPLEX。 挑战 您可以生成花费最少五分钟的 Concorde的最小TSP实例是什么? 您可以编写一个程序来输出实例,或使用您想要的任何其他方法。 计分 实例中的点越少越好。关系将被实例的文件大小破坏(请参见下文)。 标准化 不同的计算机运行得更快或更慢,因此我们将Concorde的NEOS服务器用作运行时的衡量标准。您可以采用以下简单的2维坐标形式提交点列表: #cities x_0 y_0 x_1 y_1 . . . x_n-1 y_n-1 NEOS上应使用的设置为“协和数据(xy-list文件,L2规范)”,“算法:协和(QSopt)”和“随机种子:固定”。 基准线 在1889点的情况下rl1889.tsp,从TSPLIB以“总的运行时间:871.18(秒)”,这是超过五分钟。看起来像这样:

4
忙脑海狸
编写一个不超过256个字符的Brainfuck程序,该程序将采取尽可能多的步骤,但不会无限循环。该程序可能不接受任何输入。 进一步来说: 假设右边有无限多个单元格。 一<当在左侧的单元格什么都不做。 阿-当单元值是零个集细胞255。 这些指令+-<>.在执行时均视为一步。 当一个[或]遇到,他会成为一个步骤。然而,如果该条件为真,并控制流程跳到,相应的]或[不不再次算作一个步骤。 采取最多步骤的解决方案将获胜。 如果您的解决方案中存在某种模式,则可以提供一个功能,以了解类似长度的程序n将执行多少步,但不是必须的。 要计算指令,可以使用此修改后的解释器: 例: ++[-] 遇到的指令是++[-]-],程序运行了7个步骤。

14
用零填充文件
今天的任务是获取一个现有文件,并将零添加到该文件,直到达到一定大小为止。 您必须编写一个程序或函数,该程序或函数采用当前目录中文件的名称f和字节数b。在保留的原始内容的同时f,您必须在末尾写入零(空字节,而不是ascii 0),以便其新大小为b字节。 您可以假设名称中f仅包含字母数字的ascii,您对此具有完全权限,其初始大小不大于b,但可能与一样大b,并且有无限的可用磁盘空间。 您可能不会假设f它是非空的,或者它不已经包含空字节。 执行结束后,不应修改其他现有文件,也不应该存在新文件。 测试用例 f的内容| b | f的结果内容 12345 | 10 | 1234500000 0 | 3 | 000 [空] | 2 | 00 [空] | 0 | [空] 123 | 3 | 123
12 code-golf  file-system  code-golf  code-golf  string  code-golf  string  code-golf  random  game  compression  code-golf  array-manipulation  sorting  code-golf  number  arithmetic  primes  code-golf  geometry  code-golf  code-golf  decision-problem  regular-expression  code-golf  string  math  code-challenge  restricted-source  integer  palindrome  code-golf  string  palindrome  code-challenge  busy-beaver  code-golf  ascii-art  code-golf  string  code-golf  string  permutations  code-golf  code-golf  string  permutations  code-golf  number  primes  function  set-theory  code-challenge  hello-world  code-golf  math  number  decision-problem  code-golf  code-golf  sequence  arithmetic  integer  code-golf  math  number  arithmetic  decision-problem  code-golf  kolmogorov-complexity  alphabet  code-golf  combinatorics  graph-theory  tree-traversal  code-golf  set-theory  code-golf  interpreter  brainfuck  substitution  code-golf  quine  permutations 

9
BigNum Bakeoff重新启动
你们中的有些人可能对BigNum Bakeoff很熟悉,但最终却非常有趣。在某种约束和理论条件下,例如,可以运行该程序的计算机,该目标或多或少可以概括为编写一个输出最大的C程序。 本着同样的精神,我向所有语言提出了类似的挑战。条件是: 最多512个字节。 最终结果必须打印到STDOUT。这是你的分数。如果打印多个整数,则将它们串联在一起。 输出必须是整数。(注意:Infinity不是整数。) 内置常数不能大于10,但是数字/数字都可以(例如Avogadro的常数(作为内置常数)无效,但10000无效)。 当提供足够的资源来运行时,程序必须终止。 提供足够的运行资源时,打印输出必须是确定性的。 提供给您足够大的整数或bigints,以使您的程序可以运行。例如,如果您的程序要求对小于10 1,000,000的数字进行基本运算,那么您可以假定运行此功能的计算机可以处理至少10 1,000,000的数字。(注意:您的程序也可能在可处理最大10 2,000,000的数字的计算机上运行,因此仅调用计算机可处理的最大整数将不会产生确定的结果。) 为您提供了足够的计算能力,使您的程序可以在5秒内完成执行。(因此,不必担心您的程序是否已经在计算机上运行了一个小时,并且很快就无法完成。) 没有外部资源,因此不要考虑导入Ackermann函数,除非它是内置函数。 所有魔法物品都是暂时从一个大神那里借来的。 极大,未知限制 史蒂芬·H(Steven H),Pyth f 3 +B³F+ω²(256 26) 其中B³F是Church-Kleene的序数,其基本序列为 B³F[n] = B³F(n), the Busy Beaver BrainF*** variant B³F[x] = x, ω ≤ x < B³F 排行榜: 简单地美丽的艺术,红宝石 ˚F ψ 0(X(Ω M + X(Ω M + …

8
最长的周期重复
众所周知,quine是一个输出自己的源代码的程序。但是,也可以编写一个输出另一个不同程序的程序,该程序再次输出第一个程序。例如,Python 2程序 x = '''x = {} print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3''' print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3 运行时将输出以下文本: print """x = '''x = {} print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3''' print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3""" 当作为Python程序运行时,这将再次输出原始代码。这被称为迭代奎因。因为您必须运行两次才能取回原始代码,所以我们说它的周期为2。但是,当然可以有更高的期限。 您面临的挑战是用您选择的语言编写一个尽可能长的迭代quin,以100字节或更小字节为单位。(请注意,我上面的示例不符合此规范,因为它是119个字节,包括结尾的换行符。) 请注意以下规则和说明: 通常采用奎因规则,即您的程序不能使用允许其直接访问其自身源代码的语言功能。 迭代后的输出最终必须精确地循环回到您的原始代码,并且您必须提供演示或证明。 您还必须说明循环为何如此长。这不必一定要经过数学证明,但应该可以说服熟悉您的语言的人。(这条规则在这里是因为我希望某些答案涉及非常大的数字。) 只要提供“至少1,000,000次迭代”之类的信息,而不是给出确切的数字,就可以了,只要您可以证明它至少那么长即可。在这种情况下,您的分数将是1,000,000。否则,您的分数就是您的寿命。 100字节的限制仅适用于您的初始程序-它输出的程序可能会更长,尽管它们最终最终必须回落到100字节才能输出原始代码。 您可以假定您的计算机具有无限的RAM和无限的运行时间,但是如果您的语言没有无限的精度数据类型(例如整数),则不能假定它们。您可以假设解析器可以处理的输入长度没有限制。 最高分获胜。 请注意:存在一个称为“ 戒烟”的挑战;启动Quining,这也涉及迭代quines。但是,除了基于相同的概念外,这些挑战是完全不同的类型。另一个是直线打高尔夫,而这个(故意!)确实是一个因变相而忙碌的海狸问题。能够很好地回答这个问题所需的技术可能与回答另一个问题所需的技术完全不同,而这在设计上是非常不同的。

1
组合喹
背景 您刚刚了解了组合逻辑是什么。对各种组合器感兴趣的是,您花费了大量时间来学习它们。您最终偶然发现了这个特定的表达式: (S I I (S I I)) 您会注意到,在尝试将其简化为正常形式时,经过三个步骤,它会还原为自身: (S I I (S I I)) = (I (S I I) (I (S I I))) (1) = (S I I (I (S I I))) (2) = (S I I (S I I)) (3) 您决心找到具有该特征的其他表达方式,并立即开始对此进行操作。 规则 您可以使用以下组合器的任意组合: B f g x = …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.