最长的周期重复
众所周知,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。但是,除了基于相同的概念外,这些挑战是完全不同的类型。另一个是直线打高尔夫,而这个(故意!)确实是一个因变相而忙碌的海狸问题。能够很好地回答这个问题所需的技术可能与回答另一个问题所需的技术完全不同,而这在设计上是非常不同的。