ความท้าทาย
พิจารณาแผนภาพต่อไปนี้ของ Fifteen Puzzle ในสถานะที่แก้ไขแล้ว:
_____________________
| | | | |
| 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
ย้ายแล้ว Puzzle จะมี5
ผลลัพธ์ต่างกัน (โปรดทราบว่าทั้งสองกรณีข้างต้นได้รับการยกเว้นเนื่องจากไม่สามารถเข้าถึงได้ใน 2 การเคลื่อนไหว) หนึ่งในสถานการณ์เหล่านี้คือสถานะที่แก้ไขดั้งเดิมและสามารถเข้าถึงได้ในสองวิธีที่แตกต่างกัน
งานของคุณในความท้าทายนี้คือการผลิตจำนวนของผลลัพธ์ที่แตกต่างกันที่จำนวนหนึ่งของการเคลื่อนไหวที่จะนำไปสู่ เป็น input ใช้จำนวนN >= 0
และการส่งออกจำนวนของที่ไม่ซ้ำกันสถานการณ์ที่อาจปรากฏขึ้นหลังN
การเคลื่อนไหว
กฎระเบียบ
- นี่คือรหัสกอล์ฟ รหัสที่สั้นที่สุดชนะ!
- ช่องโหว่มาตรฐานไม่ได้รับอนุญาต
- รหัสของคุณควรจะสามารถคำนวณเคส
N = 10
ในสองสามนาที ฉันจะไม่ทดสอบกฎนี้เว้นแต่ว่ามีการละเมิดเวลาอย่างเห็นได้ชัดในคำตอบ
กรณีทดสอบ
(ผลลัพธ์ที่สร้างขึ้นจากการสรุปของOEIS A089484 (ตามที่ Geobits อธิบายไว้ในการแชท ) โดยอัตโนมัติโดยสคริปต์ของ Martin Bü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
อาจบันทึกอักขระบางตัว