ความท้าทายนี้เกี่ยวกับเกม Tic Tac Toe แต่มันเล่นบนพรู
วิธีการเล่น
ในการสร้างกระดานเกมที่จำเป็นคุณต้องเริ่มด้วยเกมกระดาน Tic Tac Toe เป็นประจำ ก่อนพับลงในกระบอกสูบโดยการรวมขอบซ้ายและขอบขวา จากนั้นพับเป็นทอรัสโดยรวมขอบบนและขอบล่าง นี่คือการสร้างภาพข้อมูลอย่างง่ายของเกมกระดานที่มีการเคลื่อนไหวเล็กน้อย (ทักษะ Sick Paint!)
กฎของ Tic Tac Toe บนพรูเป็นเช่นเดียวกับ Tic Tac Toe ปกติ ผู้เล่นแต่ละคนวาง Xs และ Os สลับกัน คนแรกที่มี 3 สัญลักษณ์เดียวกันในแถวคอลัมน์หรือในแนวทแยงชนะ
เนื่องจากพรูค่อนข้างมองเห็นได้ยากเราจึงฉายบอร์ดกลับลงบนกระดาษ ตอนนี้เราสามารถเล่นเกมตามปกติ Tic Tac Toe ความแตกต่างเพียงอย่างเดียวคือคุณสามารถชนะด้วยสัญลักษณ์เดียวกัน 3 ตัวในแนวทแยงที่แตก เช่นผู้เล่น 1 (X) ชนะบอร์ดต่อไปนี้ คุณสามารถเห็นสิ่งนี้ได้อย่างง่ายดายโดยเปลี่ยนมุมมองบนพรูเล็กน้อย
หากสนใจของคุณคุณสามารถเล่น Tic Tac Toe บน Torus ที่Torus เกมส์ มีทั้งรุ่น Windows, Mac และ Android
เกมที่ดีที่สุด
ในความท้าทายนี้มีความสนใจในเกมที่ดีที่สุด เกมที่ดีที่สุดคือเกมที่ผู้เล่นทั้งสองเล่นกลยุทธ์ที่ดีที่สุด ในเกมกระดานที่ดีที่สุดของ Tic Tac Toe จะจบลงด้วยเสมอ ชวนตะลึงบนกระดานพรูเสมอผู้เล่นคนแรกที่ชนะ ในความเป็นจริงเกมบนกระดาน torus ไม่สามารถจบลงด้วยการเสมอกัน
กลยุทธ์ที่ดีที่สุดนั้นง่ายมาก:
- หากคุณสามารถชนะโดยการวางสัญลักษณ์ของคุณทำมัน
- มิฉะนั้นหากคู่แข่งของคุณมีสองสัญลักษณ์ในหนึ่งแถว / คอลัมน์ / điagonalพยายามปิดกั้นเขา มิฉะนั้นทำในสิ่งที่คุณต้องการ
- มิฉะนั้นทำในสิ่งที่คุณต้องการ
ทุกเกมที่ดีที่สุดประกอบด้วยการเคลื่อนไหว 7 ครั้งและการเคลื่อนไหวเหล่านี้สามารถอธิบายได้ด้วยวิธีต่อไปนี้:
- ผู้เล่น 1 วาง X ที่ใดก็ได้บนกระดาน (9 ตัวเลือก)
- ผู้เล่น 2 วาง O ทุกที่บนกระดาน (8 ตัวเลือก)
- ผู้เล่น 1 วาง X ที่ใดก็ได้บนกระดาน (7 ตัวเลือก)
- การเคลื่อนไหวของผู้เล่น 2 อาจถูกบังคับ (1 ทางเลือก) ถ้าไม่เขาวาง O ไว้ที่ใดก็ได้ (6 ตัวเลือก)
- การเคลื่อนไหวของผู้เล่น 1 ถูกบังคับ (1 ทางเลือก)
- ผู้เล่น 2 ถูกจับ (ผู้เล่น 1 สามารถชนะได้สองวิธี), ดังนั้นผู้เล่น 2 ต้องบล็อกผู้เล่น 1 ในทางเดียว (2 ทางเลือก)
- ผู้เล่น 1 ทำการย้ายครั้งสุดท้ายและชนะ (1 ตัวเลือก)
มี 9 * 8 * 1 * 6 * 1 * 2 * 1 + 9 * 8 * 6 * 1 * 1 * 2 * 1 = 1728 เกมที่ดีที่สุดที่แตกต่างกันในบอร์ดของเรา ที่นี่คุณสามารถดูเกมที่ดีที่สุดหนึ่งเกม:
ถ้าเราติดป้ายเซลล์ของคณะกรรมการที่มีตัวเลขแต่ละเราสามารถอธิบายเกมนี้โดยตัวเลข0-8
3518207
ตัวแรกคือ X ที่อยู่ในเซลล์ 3 (แถวกลาง, คอลัมน์ซ้าย), กว่า O ในเซลล์ 5 (แถวกลาง, คอลัมน์ขวา), มากกว่า X ในเซลล์ 1 (แถวบน, คอลัมน์กลาง), ...
การใช้สัญกรณ์หลักนี้เราจะสร้างคำสั่งซื้อโดยอัตโนมัติ ตอนนี้เราสามารถจัดเรียงเกมที่ดีที่สุดทั้งหมด 1728 เกมและเราได้รับรายชื่อ:
Game 0000: 0123845
Game 0001: 0123854
Game 0002: 0124735
Game 0003: 0124753
Game 0004: 0125634
...
Game 0674: 3518207
...
Game 1000: 5167423
Game 1001: 5167432
Game 1002: 5168304
...
Game 1726: 8765034
Game 1727: 8765043
ท้าทาย
รายการนี้เป็นส่วนหนึ่งของงานของคุณ คุณจะได้รับหนึ่งหมายเลขk
ระหว่าง 0 ถึง 1727 และคุณจะต้องส่งคืนk
เกมที่สามด้วยสัญกรณ์หลักของรายการที่เรียง
เขียนฟังก์ชั่นหรือโปรแกรมที่ได้รับตัวเลขk
(จำนวนเต็ม) คำนวณเกมที่เกี่ยวข้อง คุณสามารถอ่านอินพุตผ่าน STDIN, อาร์กิวเมนต์บรรทัดคำสั่ง, พร้อมต์หรือฟังก์ชันอาร์กิวเมนต์และพิมพ์ผลลัพธ์ (7 หลัก) ในรูปแบบที่อ่านได้ (เช่น0123845
หรือ[0, 1, 2, 3, 8, 4, 5]
) หรือส่งคืนโดยใช้สตริง (รูปแบบที่มนุษย์สามารถอ่านได้) หรือจำนวนเต็ม ตัวเลขในฐาน 10) หรือในรูปแบบอาร์เรย์ / รายการใด ๆ
ประเภทความท้าทายคือรหัสกอล์ฟ ดังนั้นรหัสที่สั้นที่สุดชนะ