พื้นหลัง
Mu Torere เป็นเกมที่เป็นหนึ่งในสองเกมที่ชาวเมารีในนิวซีแลนด์เล่นกันก่อนที่จะมีอิทธิพลต่อชาวยุโรป สิ่งนี้ทำให้มันเป็นเกมที่ไม่เหมือนใครซึ่งมี "เกณฑ์การชนะอย่างมีวัตถุประสงค์" และกฎการเล่นที่แตกต่างจากเกมอื่น ๆ ที่มีอยู่
เกม:
กระดานเป็นรูปแปดเหลี่ยม มีการเชื่อมต่อระหว่างจุดสุดยอดที่อยู่ติดกันแต่ละจุดและมีจุดศูนย์กลางที่เชื่อมต่อกับจุดยอดทั้งหมด ณ เวลาใดก็ตามแปดในเก้าโหนดจะถูกครอบครองโดยหิน ที่จุดเริ่มต้นมีหินสีขาวสี่ก้อนและหินสีดำสี่ก้อนที่แต่ละก้อนใช้เวลาครึ่งหนึ่งของแปดเหลี่ยมโดยที่โหนดกลางว่างเปล่า สีดำเคลื่อนที่ก่อน
ในแต่ละเทิร์นผู้เล่นสามารถเคลื่อนหินหนึ่งอันของเขาไปตามหนึ่งใน 16 ขอบจากโหนดหนึ่งไปยังโหนดเปล่า หินสามารถเคลื่อนย้ายได้จากโหนดด้านนอกไปยังโหนดศูนย์กลางหากหินอยู่ติดกับหินของฝ่ายตรงข้าม
ผู้เล่นเสียเมื่อเขาไม่สามารถเคลื่อนไหวได้อย่างถูกกฎหมายซึ่งเกิดขึ้นเมื่อไม่มีขอบเชื่อมต่อก้อนหินกับโหนดว่างเปล่า
นี่คือเว็บไซต์ที่อธิบายกฎ (พร้อมแผนภาพ) และเสนอการวิเคราะห์
ความท้าทาย
ความท้าทายของคุณคือการเขียนโปรแกรมที่สั้นที่สุดที่สามารถเล่นเกมที่สมบูรณ์แบบของ Mu Torere กับคู่ต่อสู้มนุษย์ โปรแกรมของคุณควรสามารถแสดงและอัปเดตกระดานเกมเคลื่อนไหวและรับการเคลื่อนไหวจากฝ่ายตรงข้ามที่เป็นมนุษย์ สิ่งสำคัญที่สุดคือควรเล่นเกมที่สมบูรณ์แบบ
เกมที่สมบูรณ์แบบ?
ใช่เกมที่สมบูรณ์แบบ ฉันได้ทำการวิเคราะห์เกมแล้วและฉันพบว่าเกมนี้ใช้เวลาไม่ จำกัด หากเล่นได้ทั้งสองด้านอย่างสมบูรณ์แบบ ซึ่งหมายความว่าโปรแกรมของคุณไม่ควรแพ้ นอกจากนี้โปรแกรมของคุณควรสามารถบังคับให้ชนะเมื่อใดก็ตามที่ฝ่ายตรงข้ามของมนุษย์ทำผิดพลาดซึ่งทำให้โปรแกรมสามารถบังคับให้ชนะ สำหรับวิธีที่โปรแกรมของคุณค้นพบการเคลื่อนไหวที่สมบูรณ์แบบนี้ขึ้นอยู่กับคุณ
รายละเอียด
หลังจากย้ายแต่ละครั้ง (และตอนเริ่มเกม) โปรแกรมของคุณควรพิมพ์กระดานเกม อย่างไรก็ตามคุณเลือกที่จะแสดงบอร์ดมันจะต้องแสดงโหนดทั้งหมดและเชื่อมต่ออย่างสมบูรณ์ (ทั้ง 16 สายการเชื่อมต่อควรถูกวาดโดยไม่มีเส้นไขว้) ในช่วงเริ่มต้นกระดานควรมีตำแหน่งเริ่มต้นที่ถูกต้อง วิธีหนึ่งในการทำให้สำเร็จคือการทำให้กระดานเกมเป็นสี่เหลี่ยม
w-w-w
|\|/|
b-o-w
|/|\|
b-b-b
สองสีคือขาวดำหรือมืด / สว่าง บอร์ดจะต้องแสดงว่าโหนดใดที่ครอบครองโดยชิ้นส่วนของผู้เล่นเช่นการทำเครื่องหมายด้วย "b" หรือ "w" และโหนดใดว่าง ผู้เข้าร่วมจะได้รับการสนับสนุน (แต่ไม่จำเป็น) เพื่อให้กระดานเกมมีกราฟิกมากกว่าข้อความธรรมดา
บอร์ดเกมของคุณควรมีระบบการกำหนดหมายเลขที่ทำให้แต่ละโหนดมีหมายเลขที่ไม่ซ้ำกัน คุณอาจเลือกที่จะจัดลำดับจำนวนบอร์ดตามที่คุณต้องการ แต่ควรอธิบายในคำตอบหรือโดยโปรแกรม กระดานสี่เหลี่ยมสามารถกำหนดหมายเลขได้ดังนี้:
1-2-3
|\|/|
4-5-6
|/|\|
7-8-9
มนุษย์เป็นคนแรกที่จะย้าย ข้อมูลของเขาจะเป็นตัวเลขเดียว นี่จะเป็นจำนวนโหนดที่ซึ่งหินเคลื่อนย้ายอยู่ในปัจจุบัน ถ้าผมต้องการที่จะย้ายหินจากโหนด 4 ไปยังโหนดที่ว่างเปล่า 5 4
ผมจะพิมพ์ 5 เป็นนัยเนื่องจากเป็นโหนดว่างเปล่าเท่านั้น
สมมติว่ามนุษย์จะเคลื่อนไหวอย่างถูกกฎหมาย
หลังจากที่มนุษย์เคลื่อนไหวเขาก็ควรพิมพ์บอร์ดที่อัพเดตแล้ว หลังจากที่โปรแกรมของคุณตัดสินใจย้ายที่ถูกกฎหมายก็ควรพิมพ์บอร์ดที่อัปเดตใหม่แล้วรอให้มนุษย์เข้าสู่การเคลื่อนไหวอีกครั้ง
โปรแกรมของคุณควรยุติเมื่อได้รับรางวัล
หมายเหตุ
ใช้กฎมาตรฐานของรหัสกอล์ฟไม่มีการเข้าถึงไฟล์ภายนอก ฯลฯ และอื่น ๆ นอกจากนี้ฉันจะกำหนดเวลาที่ยืดหยุ่น 15 วินาที (ในเครื่องที่เหมาะสม) สำหรับโปรแกรมของคุณเพื่อให้แต่ละการเคลื่อนไหว ตามที่ระบุไว้เกมนี้มีความเป็นไปได้ในการสร้างลูปแบบไม่มีที่สิ้นสุดและฉันไม่ต้องการให้การค้นหาในระดับลึกเริ่มแรกเข้าสู่วงวนไม่สิ้นสุด