チャレンジ
解決された状態の15パズルの次の図を検討してください。
_____________________
| | | | |
| 1 | 2 | 3 | 4 |
|____|____|____|____|
| | | | |
| 5 | 6 | 7 | 8 |
|____|____|____|____|
| | | | |
| 9 | 10 | 11 | 12 |
|____|____|____|____|
| | | | |
| 13 | 14 | 15 | |
|____|____|____|____|
動くたびに、興奮しているパズルを解く人は、空白に隣接する1つのピースを空白に移動する機会があります。たとえば、1
移動後、考え2
られるシナリオがあります(0
空白にしましょう):
1 2 3 4 1 2 3 4
5 6 7 8 5 6 7 8
9 10 11 12 and 9 10 11 0
13 14 0 15 13 14 15 12
2
移動後、パズルの5
結果は異なります(2つの移動では到達できないため、上記の2つのケースは除外されます)。これらの状況の1つは、元の解決済み状態であり、2つの異なる方法で到達できます。
この挑戦であなたの仕事は生産することである多数の移動の一定数がにつながることができます異なる結果のを。入力として、数値を取得し、移動後に表示される可能性のN >= 0
ある固有の状況の数を出力しN
ます。
ルール
- これはコードゴルフです。最短のコードが勝ちます!
- 標準の抜け穴は許可されていません。
- コードは
N = 10
、数分以内にケースを計算できるはずです。回答に明らかな時間の乱用がない限り、このルールをテストすることはないでしょう。
テストケース
(OEIS A089484の合計から生成された結果(チャットで Geobitsが説明したとおり)、MartinBüttner のスクリプトによって自動化されました。すべてのヘルプに感謝します!)
0 moves: 1
1 moves: 2
2 moves: 5
3 moves: 12
4 moves: 29
5 moves: 66
6 moves: 136
7 moves: 278
8 moves: 582
9 moves: 1224
10 moves: 2530
11 moves: 5162
12 moves: 10338
13 moves: 20706
14 moves: 41159
15 moves: 81548
16 moves: 160159
17 moves: 313392
18 moves: 607501
19 moves: 1173136
20 moves: 2244884
21 moves: 4271406
22 moves: 8047295
23 moves: 15055186
24 moves: 27873613
25 moves: 51197332
26 moves: 93009236
27 moves: 167435388
28 moves: 297909255
29 moves: 524507316
30 moves: 911835416
31 moves: 1566529356
s.add
すると、おそらくいくつかの文字が保存されます。