您的工作是创建最长周期的迭代quine,其中序列中每个程序的长度以500字节为界。
也就是说,如果重复以下步骤:
- 从您的初始程序开始
- 运行当前程序
- 返回步骤2
您最终将回到原始程序。循环中的程序数量就是您的分数,您正尝试将其最大化。
这些程序都不会引发任何错误。每个程序也必须以相同的方式运行(例如,没有不同的版本,实现,编译器选项,平台等)(编辑:是的,最后一个包括任何外部状态,例如伪随机数生成器的外部状态)语句。每次运行后都必须“重置”外部状态。如果您使用的是真正的随机数,则以最坏的情况为准。)
将此挑战与最长周期的迭代方法(除了100与500)不同的是,循环中的每个程序也必须等于或小于500字节。这意味着最长的周期为(256 ^ 501-1)/ 255或更小。当然,这是一个很大的数字,但是就计算所需的代码量而言,并不是那么大。因此,挑战是要尽可能多地使用(256 ^ 501-1)/ 255个可能性,而不是忙碌的海狸挑战。
程序不得访问其自己的源代码。但是,如果需要,可以允许使用空程序(只要遵循其他规则)。
由于手动检查程序很困难,因此您可以使用理论方法计算出分数。您必须在程序中包含分数和正确性的说明。如果您无法计算出分数,则可以使用循环中程序数量的下限作为实际分数。当您找到更好的下限时,或者如果您找到确切的实际分数,则可以更新此内容。
这是代码挑战,因此得分最高!
编辑:建议您用科学计数法写下您的分数,以使答案更容易比较。也可以使用其他形式的乐谱,这尤其好,尤其是如果它们更清楚地与您的程序相关联时。此外,鼓励读者编辑以前的答案以符合此要求。