โปรดปราน
ลำดับ 1 ( มอบรางวัล )
ฉันจะโยน 50 ตัวแทนสำหรับคำตอบแรกที่ถูกต้อง
ฉบับที่ 2 ( ได้รับรางวัล )
ฉันจะโยนอีก 100 ตัวแทนสำหรับคำตอบที่ถูกต้องสั้นที่สุด
หมายเลข 3 ( เปิดสำหรับการส่ง )
ฉันจะโยนใน 200 ตัวแทนสำหรับคนแรกที่มีคำตอบที่ถูกต้องสั้นลงอย่างมีนัยสำคัญ มีนัยสำคัญที่มากที่สุด 45% ของคำตอบที่สั้นที่สุดในปัจจุบัน ( 564 ไบต์ x 0.45 = สูงสุด 254 ไบต์ )
เกม
คุณจำเกมคลาสสิค " Nine Men's Morris " หรือเพียงแค่ " Mill " มีรูปแบบที่เรียกว่าThree Men's Morrisซึ่งมีลักษณะคล้ายกับนิ้วเท้าโอค - แทค
กฎระเบียบ
นี่คือบอร์ดเปล่าของเกม:
a b c
1 [ ]–[ ]–[ ]
| \ | / |
2 [ ]–[ ]–[ ]
| / | \ |
3 [ ]–[ ]–[ ]
[ ]
เป็นฟิลด์และ|–/\
แสดงเส้นทางระหว่างฟิลด์เหล่านั้น
เกมนี้เล่นโดยผู้เล่นสองคน1
และ2
แต่ละคนมี 3 โทเค็นบนกระดาน เรื่องนี้เกิดขึ้นจริงแล้วและเราอยู่ในเกม เกมชนะถ้าผู้เล่นคนใดคนหนึ่งสามารถสร้างรูปแบบหนึ่งmill
ซึ่งเป็นแถวแนวตั้งหรือแนวนอนของโทเค็นของผู้เล่น 3 คน
สามารถย้ายโทเค็นบนกระดานไปตามสายเชื่อมต่อได้ตามกฎนี้:
ไปยังตำแหน่งว่างใด ๆ ที่อยู่ติดกัน (เช่นจากตำแหน่งขอบไปยังกึ่งกลางหรือจากกึ่งกลางไปยังตำแหน่งขอบหรือจากตำแหน่งขอบไปยังตำแหน่งขอบที่อยู่ติดกัน
ผู้เล่นจะต้องเคลื่อนที่ยกเว้นในกรณีที่ไม่มีตำแหน่งว่างข้างเคียงซึ่งในกรณีนี้การกระโดดข้าม
ความท้าทาย
คุณเป็นผู้เล่น1
และท่าต่อไปของคุณคือ เขียนโปรแกรมหรือฟังก์ชั่นที่กำหนดว่า:
- คุณสามารถบังคับให้ชนะด้วยการเคลื่อนไหว 2 หรือน้อยกว่า ( ชนะแน่นอน )
- คุณสามารถชนะด้วย 2 หรือน้อยกว่าย้ายถ้าฝ่ายตรงข้ามของคุณทำผิดพลาด ( ชนะไปได้ )
- คุณไม่สามารถชนะด้วยการเคลื่อนไหว 2 ครั้งหรือน้อยกว่าเพราะคุณต้องการการเคลื่อนไหวมากกว่านี้หรือเพราะการบังคับที่บังคับให้ฝ่ายตรงข้ามชนะ ( เป็นไปไม่ได้ที่จะชนะ )
ความต้องการ
- แม้ว่าคุณจะชนะแน่นอนเมื่อคุณเบื่อคู่ต่อสู้จนตายโปรแกรมของคุณจะต้องเสร็จสิ้นในเวลาที่ จำกัด
- คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่น
อินพุต
ผู้เล่นจะถูกแทนด้วยและ1
กำหนดเขตข้อมูลฟรี คุณสามารถรับอินพุตเป็นเมทริกซ์หรืออาร์เรย์2
0
ชัดเจน
A B C D
2 1 0 | 2 1 0 | 1 0 1 | 1 2 2
2 1 2 | 0 1 0 | 1 0 2 | 2 1 O
0 0 1 | 2 2 1 | 0 2 2 | O O 1
A: [2,1,0,2,1,2,0,0,1]
B: [2,1,0,0,1,0,2,2,1]
C: [1,0,1,1,0,2,0,2,2]
D: [1,2,2,2,1,0,0,0,1]
เป็นไปได้
A B C
1 0 1 | 1 0 1 | 1 2 2
1 2 2 | 1 2 0 | 0 0 1
2 0 0 | 2 0 2 | 2 1 0
A: [1,0,1,1,2,2,2,0,0]
B: [1,0,1,1,2,0,2,0,2]
C: [1,2,2,0,0,1,2,1,0]
เป็นไปไม่ได้
A B
1 0 0 | 1 2 0
1 2 2 | 2 1 0
2 0 1 | 1 2 0
A: [1,0,0,1,2,2,2,0,1]
B: [1,2,0,2,1,0,1,2,0]
เอาท์พุต
โปรแกรมของคุณควรส่งออก / ส่งกลับยิ้ม:
- ชนะแน่นอน:
:)
- ชนะที่เป็นไปได้:
:|
- ชนะไม่ได้:
:(
ตัวอย่าง
ชนะแน่นอนในสองจังหวะ:
[2][1][ ] 1. [2][1][ ]
[2][1][2] -> [2][1][2]
[ ][ ][1] [ ][1][ ]
[2][1][ ] 1. [2][1][ ] [ ][1][ ] 2. [ ][ ][1]
[ ][1][ ] -> [ ][ ][1] -> [2][ ][1] -> [2][ ][1]
[2][2][1] [2][2][1] [2][2][1] [2][2][1]
[1][ ][1] 1. [ ][1][1] [ ][1][1] 2. [1][1][1]
[1][ ][2] -> [1][ ][2] -> [1][ ][2] -> [ ][ ][2]
[ ][2][2] [ ][2][2] [2][ ][2] [2][ ][2]
ชนะได้ในสองจังหวะ:
[1][ ][1] 1. [ ][1][1] [ ][1][1] 2. [1][1][1]
[1][2][ ] -> [1][2][ ] -> [1][2][2] -> [ ][2][2]
[2][ ][2] [2][ ][2] [2][ ][ ] [2][ ][ ]
[1][ ][1] 1. [ ][1][1] [ ][1][1] 2. [1][1][1]
[1][2][ ] -> [1][2][ ] -> [1][2][2] -> [ ][2][2]
[2][ ][2] [2][ ][2] [2][ ][ ] [2][ ][ ]
[1][2][2] 1. [ ][2][2] [2][ ][2] 2. [1][2][2]
[ ][ ][1] -> [1][ ][1] -> [1][ ][1] -> [1][1][1]
[2][1][ ] [2][1][ ] [2][1][ ] [2][ ][ ]
เป็นไปไม่ได้ที่จะชนะในการเคลื่อนไหวสองครั้ง:
[1][ ][ ]
[1][2][2]
[2][ ][1]
โบนัส
ในกรณีที่ชนะได้แน่นอนและโปรแกรมของคุณส่งสัญญาณการเคลื่อนที่ของวิธีหนึ่งสู่ความสำเร็จเช่นa1:a2
(1 การเคลื่อนไหว) หรือa1:a2,a3:b2
(การเคลื่อนไหว 2 ครั้ง) คุณสามารถถอน30%ของจำนวนไบต์
นี่คือรหัสกอล์ฟ - ดังนั้นคำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ ช่องโหว่มาตรฐานไม่ได้รับอนุญาต
ขอขอบคุณที่ปีเตอร์เทย์เลอร์ที่ได้รับการแก้ไขข้อบกพร่องบางอย่างและถ้อยคำที่ดีขึ้นในSandbox
[1,0,0,2,1,0,2,2,1]
ผู้เล่น 2 ไม่สามารถเคลื่อนไหวได้ - นี่เป็นชัยชนะสำหรับผู้เล่น 1 หรือไม่