ในเกมของ Freecell คุณจะได้รับมอบหมายให้สร้างเสาเข็มสี่กองในชุดสูทจากเอซถึงราชาในเลย์เอาต์ที่คุณสร้างขึ้นลงในสีสลับ อย่างไรก็ตามคุณสามารถสร้างการ์ดได้ครั้งละหนึ่งใบเท่านั้นดังนั้นคุณจะได้รับ "เซลล์ฟรี" สี่ใบซึ่งแต่ละการ์ดสามารถมีการ์ดเดียวเพื่อช่วยให้คุณย้ายลำดับทั้งหมด ความคิดคือคุณสานการ์ดแต่ละใบเข้าและออกจากเซลล์อิสระตามต้องการเพื่อช่วยคุณแก้ปัญหาเกม
งานของคุณคือสร้างโปรแกรมที่จะแก้ปัญหาเกมเหล่านี้ให้น้อยที่สุดเท่าที่จะทำได้
โปรแกรมของคุณจะป้อนข้อมูลตามลำดับของการ์ด 52 ใบในรูปแบบต่อไปนี้:
2S 9H 10C 6H 4H 7S 2D QD KD QC 10S AC ...
ซึ่งจะได้รับการจัดการในรูปแบบเริ่มต้นตามลำดับนี้:
01 02 03 04 05 06 07 08
09 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32
33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48
49 50 51 52
และส่งคืนรายการการเคลื่อนไหวเพื่อแก้ไขเกม การย้ายแต่ละครั้งจะอยู่ในรูปแบบนี้:
- ตัวเลขที่แสดงถึงจำนวนเสาเข็ม (
1
ผ่าน8
) หรือเซลล์ว่าง (A
ถึงD
) ซึ่งแสดงถึงเสาเข็มต้นทาง - ตัวเลขหรือตัวอักษรอื่น ๆ ที่แสดงถึงปลายทางของกองหรือเซลล์อิสระหรือ
F
สำหรับรากฐานของชุดนั้น
ผลลัพธ์จะมีลักษณะดังนี้:
18 28 3A 8B 8C 85 B5 35 4F etc.
เมื่อใส่การ์ดเข้าไปในฐานแล้วจะไม่สามารถนำการ์ดออกได้ เนื่องจากมีการย้ายไพ่เพียงครั้งเดียวในแต่ละครั้งการย้ายลำดับของไพ่ 3 ใบต้องมีการย้าย 5 ครั้งและลำดับของไพ่ 5 ใบต้องมีการย้าย 9 ครั้ง
หากเกมไม่สามารถแก้ไขได้โปรแกรมของคุณควรระบุเช่นนี้ อย่างไรก็ตามโปรแกรมของคุณจะต้องสามารถแก้ปัญหาเกมที่แก้ไขได้
โปรแกรมของคุณจะถูกพิจารณาตามข้อเสนอ 32,768 ข้อที่พบในโปรแกรม Microsoft FreeCell ดั้งเดิม เพื่อให้ถูกต้องโปรแกรมของคุณจะต้องแก้ปัญหาได้สำเร็จทุกข้อยกเว้นดีล # 11,982ซึ่งไม่สามารถแก้ไขได้ คะแนนของคุณจะเป็นจำนวนการเคลื่อนไหวทั้งหมดที่ใช้ในการแก้ข้อเสนอ 32,767 ข้อโดยรหัสที่สั้นลงจะเป็นตัวแบ่งไทเบรก
ไฟล์ที่มีสำรับทั้งหมดในรูปแบบที่ต้องการโดยข้อกำหนดข้างต้นสามารถดาวน์โหลดได้ที่นี่ (ไฟล์ขนาด 5.00 MB): https://github.com/joezeng/pcg-se-files/raw/master/freecell_decks