介绍
受最近录像带《被困的骑士-菲利普》的启发,我提出了一个挑战。
被捕获的骑士序列是长度为2016的有限整数序列,从1开始,具有以下构造规则:
- 用以下方式写一个数字螺旋:
17 16 15 14 13 ...
18 5 4 3 12 ...
19 6 1 2 11 ...
20 7 8 9 10 ...
21 22 23 24 25 ...
- 在1上放置一个骑士。
- 根据国际象棋的规则,将骑士移至网格数量最少的网格,该网格以前从未被访问过(即垂直2个单位,水平1个单位,反之亦然)。
- 重复直到骑士被卡住。
这是前三个步骤:
步骤1
17 [16] 15 [14] 13
[18] 5 4 3 [12]
19 6 < 1> 2 11
[20] 7 8 9 [10]
21 [22] 23 [24] 25
可能的移动是10、12、14、16、18、20、22、24,其中最小的是10,因此第二项是10。
第2步
4 [ 3] 12 [29] 54
( 1) 2 11 28 [53]
8 9 <10> 27 52
[23] 24 25 26 [51]
46 [47] 48 [49] 50
可能的动作是1,3,23,29,47,49,51,53,其中最小的是3,所以第三项是3。
第三步
35 [34] 33 [32] 31
[16] 15 14 13 [30]
5 4 < 3> 12 29
[ 6] ( 1) 2 11 [28]
7 [ 8] 9 (10) 27
可能的动作是图6,图8,10,16,28,30,32,34,其中最小的是6,所以第四项是6。
该序列以以下内容开头:
1 10 3 6 9 4 7 2 5 8 11 14 ...
并以
... 2099 2284 2477 2096 2281 2474 2675 2884 3101 2880 2467 2084
挑战
编写最短的程序或函数,接收范围[1, 2016]
(或[0, 2015]
如果使用0-indexed)范围内的整数作为输入,然后输出被困骑士序列中该索引处的数字。您可以选择使用0索引或1索引对序列进行索引,但是必须指定要使用的索引方案。
测试用例(1索引)
n | s(n)
-----+-----
1 | 1
2 | 10
3 | 3
6 | 4
11 | 11
21 | 23
51 | 95
101 | 65
201 | 235
501 | 761
1001 | 1069
2001 | 1925
2016 | 2084
有关所有可能的输出,请参阅此页面。
获奖标准
每种语言的最短代码胜出。适用标准漏洞。
12851850258