前書き
非常に最近のビデオThe Trapped Knight-Numberphileに触発されて、私は挑戦を思いつきました。
捕捉された騎士配列は 1から始まる長さ2016の有限の整数配列であり、かつ以下の構成規則を有しています。
- 次の方法で数値スパイラルを記述します。
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ユニット、またはその逆)。
- 騎士が動けなくなるまで繰り返します。
最初の3つのステップは次のとおりです。
ステップ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なので、2番目の項は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であるので、第三項は3である間、3、23、29、47、49、51、53、。
ステップ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第4項は6であるので、最小が6である間、16、28、30、32、34、。
シーケンススター:
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インデックスが使用されている場合)を入力として受け取り、トラップされたナイトシーケンスのそのインデックスにある数値を出力して、最短のプログラムまたは関数を記述します。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