哥伦布尺子是非负整数的集合,因此集合中没有两对整数间隔相同。
例如,[0, 1, 4, 6]
是Golomb标尺,因为此集合中两个整数之间的所有距离都是唯一的:
0, 1 -> distance 1
0, 4 -> distance 4
0, 6 -> distance 6
1, 4 -> distance 3
1, 6 -> distance 5
4, 6 -> distance 2
为了简化此挑战(并且翻译很简单),我们强加了Golomb标尺始终包含数字0
(前面的示例中这样做)。
由于该集合的长度4
,因此我们说这是一个有序 的Golomb标尺4
。此集合(或元素,因为0
总是在集合中)中的最大距离是6
,因此我们说这是长度的哥伦布尺 6
。
你的任务
找到哥伦布统治者为了 50
给100
有小(含)的长度,你可以找到。您发现的标尺不一定是最佳的(请参见下文)。
最优性
N
如果没有其他N
长度较小的Golomb直尺,则称Golomb直尺是最优的。
最佳Golomb直尺的订单少于28个,但随着订单的增加,找到和证明最优性变得越来越困难。
因此,不能期望您找到介于50
和之间的任何订单的最佳Golomb标尺100
(甚至更不可能期望您可以证明它们是最佳的)。
程序的执行没有时间限制。
基准线
下面的列表是使用天真的搜索策略评估的Golomb尺规从50
到100
(按顺序)的长度列表(感谢@PeterTaylor获得此列表):
[4850 5122 5242 5297 5750 5997 6373 6800 6924 7459 7546 7788 8219 8502 8729 8941 9881 10199 10586 10897 11288 11613 11875 12033 12930 13393 14046 14533 14900 15165 15687 15971 16618 17354 17931 18844 19070 19630 19669 20721 21947 22525 23290 23563 23880 24595 24767 25630 26036 26254 27218]
所有这些长度的总和为734078
。
计分
你的分数会期间的所有哥伦布统治者的长度之50
和100
,由哥伦布之间统治者的长度之和除以50
和100
基线:734078
。
如果找不到特定订单的Golomb尺子,则应使用该特定订单的基线长度的两倍,以相同的方式计算分数。
得分最低的答案将获胜。
如果是平局,则比较两个答案不同的最大顺序的长度,最短的一个获胜。如果两个答案的所有订单长度都相同,则首先发布的答案将获胜。
n
为n(n-1)/2
,因为这是多少个正差。因此,在此挑战中可能的最低分是147050/734078 > 0.2003193
。