描述
如果没有点集(以及它们的索引)落在次数的多项式上,则将整数的置换{1, 2, ..., n}
称为最小可插值。那是,k+2
k
- 没有两点落在一条水平线上(0度多项式)
- 线上没有三个点(一阶多项式)
- 抛物线(2次多项式)上没有四个点
- 等等。
挑战
编写一个程序,计算OEIS序列A301802(n),它的最小可插值置换的{1, 2, ..., n}
数量应n
尽可能大。
计分
我将在输入增加的情况下在计算机(2.3 GHz Intel Core i5,8 GB RAM)上计时您的代码。您的分数将是最大的输入,只需不到1分钟即可输出正确的值。
例
例如,排列[1, 2, 4, 3]
是最小可插值的,因为
the terms together with their indices
[(1, 1), (2, 2), (3, 4), (4, 3)]
have the property that
(0) No two points have the same y-value.
(1) No three points lie on a line.
(2) No four points lie on a parabola.
在图示中,您可以看到水平线(红色)上最多有一个点,直线(蓝色)上最多有两个点,抛物线(绿色)上最多有三个点。
数据
下面是最小倍频细排列的n=3
,n=4
和n=5
:
n = 3: [1,3,2],[2,1,3],[2,3,1],[3,1,2]
n = 4: [1,2,4,3],[1,3,2,4],[1,3,4,2],[1,4,2,3],[2,1,3,4],[2,1,4,3],[2,3,1,4],[2,4,1,3],[2,4,3,1],[3,1,2,4],[3,1,4,2],[3,2,4,1],[3,4,1,2],[3,4,2,1],[4,1,3,2],[4,2,1,3],[4,2,3,1],[4,3,1,2]
n = 5: [1,2,5,3,4],[1,3,2,5,4],[1,3,4,2,5],[1,4,2,3,5],[1,4,3,5,2],[1,4,5,2,3],[1,4,5,3,2],[1,5,3,2,4],[2,1,4,3,5],[2,3,1,4,5],[2,3,5,1,4],[2,3,5,4,1],[2,4,1,5,3],[2,4,3,1,5],[2,4,5,1,3],[2,5,1,3,4],[2,5,1,4,3],[2,5,3,4,1],[2,5,4,1,3],[3,1,4,5,2],[3,1,5,2,4],[3,1,5,4,2],[3,2,5,1,4],[3,2,5,4,1],[3,4,1,2,5],[3,4,1,5,2],[3,5,1,2,4],[3,5,1,4,2],[3,5,2,1,4],[4,1,2,5,3],[4,1,3,2,5],[4,1,5,2,3],[4,1,5,3,2],[4,2,1,5,3],[4,2,3,5,1],[4,2,5,1,3],[4,3,1,2,5],[4,3,1,5,2],[4,3,5,2,1],[4,5,2,3,1],[5,1,3,4,2],[5,2,1,3,4],[5,2,1,4,3],[5,2,3,1,4],[5,2,4,3,1],[5,3,2,4,1],[5,3,4,1,2],[5,4,1,3,2]
如果我的程序正确,则的前几个值a(n)
,的最小可插值排列数{1, 2, ..., n}
:
a(1) = 1
a(2) = 2
a(3) = 4
a(4) = 18
a(5) = 48
a(6) = 216
a(7) = 584
a(8) = 2870
好的序列号!| 尽管您指定了最快的代码,但并未指定最快的机器。确切的中奖标准是什么?
—
user202729 '18
为了增加对user202729的评论,我建议您使用一些标签来确定获胜标准:最快的代码要求在同一台计算机上测试提交以比较运行时间(通常,挑战的OP会这样做)。最快的算法会要求回答者提出时间复杂度最低的代码。代码高尔夫会要求用户提供尽可能短的源代码(或等效代码)的代码。除此之外,这确实是一个不错的挑战。
—
JungHwan Min,
您的示例文本使用零索引,而图像使用单索引。
—
乔纳森·弗雷希
由于所有点都是由第一个自然数的置换定义的,是否没有任何两个点占据相同的高度?
—
乔纳森·
@JonathanFrech,实际上,应该将其索引为1,因为这些是排列。你是对的!因为我们正在处理置换,所以0度多项式条件是免费提供的。
—
Peter Kagey