Gomokuหรือห้าในแถวเป็นเกมกระดานที่เล่นโดยผู้เล่นสองคนในตารางด้วยหินสีดำและสีขาว ใครก็ตามที่สามารถวาง5หินในแถว (แนวนอนแนวตั้งหรือแนวทแยงมุม) ชนะเกม
กฎระเบียบ
ใน KoTH นี้เราจะเล่นกฎ Swap2 ซึ่งหมายความว่าเกมประกอบด้วยสองขั้นตอน: ในระยะแรกผู้เล่นสองคนจะตัดสินว่าใครจะไปก่อน / ผู้ที่เล่นเป็นสีดำหลังจากนั้นพวกเขาจะวางหินหนึ่งก้อนในแต่ละรอบโดยเริ่มจากผู้เล่น ใครเลือกสีดำ
ระยะแรก
ให้ผู้เล่นเป็นA & BและAจะเปิดเกม:
- Aวางสองหินสีดำและสีขาวบนกระดาน
- Bสามารถเลือกหนึ่งในสามการเคลื่อนไหวต่อไปนี้:
- ผู้เล่นBตัดสินใจที่จะเล่นเป็นสีดำ: เฟสแรกสิ้นสุดลง
- ผู้เล่นBตัดสินใจที่จะวางหินสีขาวและเล่นสีขาว: ช่วงแรกจบลง
- ผู้เล่นBตัดสินใจที่จะเล่นหนึ่งดำและหินขาวหนึ่งก้อน: Aจะเลือกสี
เฟสเกม
ผู้เล่นแต่ละคนวางก้อนหินสีเดียวบนกระดานเริ่มจากผู้เล่นที่เล่นเป็นสีดำสิ่งนี้จะดำเนินต่อไปจนกว่าจะไม่มีที่ว่างในการเล่น (ในกรณีนี้คือเน็คไท) หรือผู้เล่นคนหนึ่งเล่นก้อนใน แถว (ในกรณีที่ผู้เล่นชนะ)
แถวหมายถึงแนวนอนแนวตั้งหรือแนวทแยง การชนะคือการชนะ - ไม่สำคัญว่าผู้เล่นจะทำคะแนนได้มากกว่าหนึ่งแถวหรือไม่
กฎของเกม KoTH
- ผู้เล่นแต่ละคนเล่นกับผู้เล่นคนอื่นสองครั้ง:
- เริ่มแรกมันจะถูกสุ่มเลือกว่าใครจะไปก่อน
- ในเกมถัดไปผู้เล่นที่ได้เล่นครั้งสุดท้ายต้องไปก่อน
- การชนะนั้นมีค่า 2 คะแนน, เสมอ 1 และแพ้ 0
- เป้าหมายคือการทำคะแนนให้ได้มากที่สุด
บอทของคุณ
ในการทำให้ความท้าทายนี้สามารถเข้าถึงได้สำหรับหลายภาษาเท่าที่เป็นไปได้อินพุต / เอาต์พุตจะต้องผ่านstdin / stdout (ตามบรรทัด) โปรแกรมจะแจ้งให้ผู้พิพากษาโปรแกรมของคุณโดยการพิมพ์บรรทัดบอทของคุณstdinและบอทของคุณจะพิมพ์หนึ่งบรรทัดเพื่อstdout
เมื่อคุณได้รับEXIT
ข้อความคุณจะได้รับครึ่งวินาทีในการเขียนไฟล์ให้เสร็จก่อนที่ผู้พิพากษาจะฆ่ากระบวนการ
randomness
ในการทำให้ทัวร์นาเมนต์สามารถตรวจสอบได้ผู้ตัดสินใช้การสุ่มแบบสุ่มและบอทของคุณต้องทำเช่นเดียวกันด้วยเหตุผลเดียวกัน บอทจะได้รับเมล็ดพันธุ์ผ่านอาร์กิวเมนต์บรรทัดคำสั่งที่ควรใช้โปรดอ้างอิงในส่วนถัดไป
ข้อโต้แย้ง
บอทรับอาร์กิวเมนต์สองบรรทัดคำสั่ง:
- ชื่อของคู่ต่อสู้
- เมล็ดเพื่อการสุ่ม
สถานะผู้ใช้
เนื่องจากโปรแกรมของคุณจะเริ่มใหม่เสมอสำหรับแต่ละเกมคุณจะต้องใช้ไฟล์เพื่อเก็บข้อมูลใด ๆ ที่คุณต้องการเก็บไว้ คุณได้รับอนุญาตให้อ่าน / เขียนไฟล์ใด ๆ หรือสร้าง / ลบโฟลเดอร์ย่อยในไดเรกทอรีปัจจุบันของคุณ คุณไม่ได้รับอนุญาตให้เข้าถึงไฟล์ใด ๆ ในไดเรกทอรีหลัก!
รูปแบบอินพุต / เอาต์พุต
BOARD
((X,Y),COLOR)
X
Y
COLOR
"B"
"W"
SP
XY
(X,Y)
|
ในระยะแรกมีข้อความสามประเภท:
Prompt (judge) -> Answer (bot)
"A" SP "[]" -> XY XY XY
"B" SP BOARD -> "B" | "W" SP XY | XY XY
"C" SP BOARD -> "B" | "W"
- ข้อความแรกขอสาม tuples สองคนแรกจะเป็นตำแหน่งของหินสีดำและคนที่สามตำแหน่งสำหรับสีขาว
- ข้อความที่สองขอให้:
"B"
-> เลือกสีดำ"W" SP XY
-> เลือกสีขาวแล้ววางหินสีขาวที่XY
XY XY
-> วางหินสองก้อน (อันแรกสีดำและสีขาวอันที่สอง)
- สีสุดท้ายจะถามสีที่คุณต้องการเล่น
หลังจากนั้นเกมปกติจะเริ่มต้นและข้อความจะง่ายขึ้นมาก
N BOARD -> XY
N
XY
มีข้อความเพิ่มเติมหนึ่งข้อความซึ่งไม่คาดหวังคำตอบ
"EXIT" SP NAME | "EXIT TIE"
ที่NAME
เป็นชื่อของบอทที่ชนะ ข้อความที่สองจะถูกส่งหากเกมจบลงเนื่องจากไม่มีใครชนะและไม่มีที่ว่างสำหรับวางหิน (หมายความว่าบอทของคุณไม่สามารถตั้งชื่อได้TIE
)
การจัดรูปแบบ
เนื่องจากข้อความจากบ็อตสามารถถอดรหัสได้โดยไม่ต้องเว้นวรรคช่องว่างทั้งหมดจะถูกละเว้น (เช่นได้(0 , 0) (0,12)
รับการปฏิบัติเหมือน(0,0)(0,12)
) ข้อความจากผู้ตัดสินมีเพียงช่องว่างเพื่อแยกส่วนต่าง ๆ (เช่น. ตามที่ระบุไว้ข้างต้นด้วยSP
) ช่วยให้คุณสามารถแบ่งบรรทัดในช่องว่าง
การตอบสนองที่ไม่ถูกต้องจะส่งผลให้รอบนั้นหายไป (คุณจะยังได้รับEXIT
ข้อความ) ดูกฎ
ตัวอย่าง
นี่คือตัวอย่างของข้อความจริง:
A []
B [((0,0),"B"),((0,1),"W"),((14,14),"B")]
1 [((0,0),"B"),((0,1),"W"),((1,0),"B"),((1,1),"W"),((14,14),"B")]
ผู้พิพากษา
คุณสามารถค้นหาโปรแกรมผู้พิพากษาที่นี่ : การเพิ่มบอถึงมันก็สร้างโฟลเดอร์ใหม่ในbots
โฟลเดอร์วางไฟล์ของคุณและมีการเพิ่มไฟล์meta
ที่มีชื่อ , คำสั่ง , ข้อโต้แย้งและธง0/1 (เปิด / ปิดstderr ) แต่ละ ในบรรทัดแยกต่างหาก
เมื่อต้องการเรียกใช้การแข่งขันเพียงแค่เรียกใช้และการแก้ปัญหาบอทำงานครั้งเดียว./gomoku
./gomoku -d BOT
หมายเหตุ:คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับวิธีตั้งค่าและใช้งานผู้พิพากษาในที่เก็บ Github นอกจากนี้ยังมีสามตัวอย่างบอท ( Haskell , PythonและJavaScript )
กฎระเบียบ
- ในการเปลี่ยนแปลงแต่ละบอท*ทัวร์นาเมนต์จะรันใหม่และผู้เล่นที่ได้คะแนนมากที่สุด (ไทเบรกจะถูกส่งเป็นครั้งแรก)
- คุณสามารถส่งบอทได้มากกว่าหนึ่งบอทตราบเท่าที่พวกเขาไม่ได้เล่นกลยุทธ์ทั่วไป
- คุณไม่ได้รับอนุญาตให้สัมผัสไฟล์นอกไดเรกทอรีของคุณ (เช่นการจัดการไฟล์ของผู้เล่นอื่น)
- หากบอทของคุณขัดข้องหรือส่งการตอบสนองที่ไม่ถูกต้องเกมปัจจุบันจะถูกยกเลิกและคุณแพ้
- ในขณะที่ผู้ตัดสิน (ปัจจุบัน) ไม่บังคับใช้เวลา จำกัด ต่อรอบคุณควรใช้เวลาให้น้อยเพราะอาจไม่สามารถทดสอบการส่งทั้งหมดได้**
- การใช้ข้อบกพร่องในโปรแกรมการตัดสินถือเป็นช่องโหว่
* คุณได้รับการสนับสนุนให้ใช้ Github เพื่อส่งบอทของคุณโดยตรงในbots
ไดเรกทอรี (และอาจแก้ไขutil.sh
)
** ในกรณีที่เป็นปัญหาคุณจะได้รับการแจ้งเตือนฉันจะพูดอะไรที่ต่ำกว่า 500ms (นั่นมาก!) ควรจะเรียบร้อยแล้ว
การพูดคุย
หากคุณมีคำถามหรือต้องการพูดคุยเกี่ยวกับ KoTH นี้อย่าลังเลที่จะเข้าร่วมแชท !