挑战
考虑处于解决状态的以下十五难题图:
_____________________
| | | | |
| 1 | 2 | 3 | 4 |
|____|____|____|____|
| | | | |
| 5 | 6 | 7 | 8 |
|____|____|____|____|
| | | | |
| 9 | 10 | 11 | 12 |
|____|____|____|____|
| | | | |
| 13 | 14 | 15 | |
|____|____|____|____|
每一步,兴奋的谜题都有机会将一块与空白空间相邻的部分移动到空白空间中。例如,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个移动中达到它们)。这些情况之一是原始的已解决状态,可以通过两种不同的方式来达到。
你在这个挑战的任务是生产数量不同的结果是移动的若干可导致。输入一个数字N >= 0
,然后输出移动后可能出现的独特情况的数量N
。
规则
- 这是代码高尔夫球。最短的代码胜出!
- 不允许出现标准漏洞。
- 您的代码应能够
N = 10
在几分钟内计算出大小写。除非答案中存在明显的时间浪费,否则我不会测试该规则。
测试用例
(从求和产生的结果OEIS A089484(如Geobits中描述的聊天),由马丁布特内尔的自动脚本。感谢所有帮助!)
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
可能会节省一些字符。