บทนำ
Morris ของ Nine Mens (หรือเรียกอีกอย่างว่า Mills) เป็นเกมกระดานสำหรับผู้เล่นสองคนซึ่งเล่นบนกระดานต่อไปนี้ (ภาพที่นำมาจากหน้า Wikipedia-link):
ผู้เล่นแต่ละคนมี 9 คนสีดำและสีขาว กฎที่เป็นรูปธรรมนั้นไม่สำคัญสำหรับความท้าทายนี้ แต่ลองดูที่หน้า Wikipediaถ้าคุณสนใจ
ความท้าทาย
กำหนดตารางเป็น input ซึ่งหมายถึงการ boardstate บางอย่างที่ส่งออกนับโรงงานทั้งหมดที่มีm
ชายสามคนที่มีสีเดียวกันจะก่อตัวเป็นมิลล์เมื่อพวกเขาอยู่ในแนวตรงของจุดเชื่อมต่อ ถึงไม่ใช่โรงสีเนื่องจากผู้ชายมีสีต่างกัน นอกจากนี้เพื่อจะได้รูปแบบโรงงานตั้งแต่สามจุดจะต้องมีการเชื่อมต่อ
บอร์ดในภาพด้านบนมีตัวอย่างสองลัอ หนึ่งจากไปและจากไป0<=m<=8
b2
f2
d2
d5
f2
f6
e3
e5
อินพุต
บอร์ดแสดงเป็นกริด 2D ที่มี 24 คะแนนซึ่งเชื่อมต่อตามที่แสดงในภาพตัวอย่างด้านบน ตัวอย่างใช้ตัวอักษรจากa-g
สำหรับคอลัมน์และตัวเลขจาก1-7
สำหรับแถว แต่คุณสามารถเลือกรูปแบบการป้อนข้อมูลที่สมเหตุสมผลตราบใดที่มันจับคู่ 24 พิกัดที่ไม่ซ้ำกันกับสถานะใดสถานะหนึ่งต่อไปนี้:
- ว่างเปล่า
- ถ่ายโดยคนดำ
- ถ่ายโดยสีขาว
การกลับใจที่เป็นรูปธรรมนั้นขึ้นอยู่กับคุณว่าคุณไม่ได้ถูก จำกัด ให้เป็น "b" หรือ "w" สำหรับสี
นอกจากนี้ข้อมูลที่คุณป้อนอาจไม่มีข้อมูลเพิ่มเติมใด ๆ
หมายเหตุเพิ่มเติม
- คุณไม่จำเป็นต้องแมปคะแนนด้วยค่าใด ๆ ถ้าคุณต้องการที่จะรับอินพุตเป็นอาเรย์ 2 มิติก็ถือว่าใช้ได้เช่นกัน แต่โปรดจำไว้ว่ามีการใช้งานไม่ได้ทุกจุดและคุณต้องพิจารณาการเชื่อมต่อระหว่างพวกเขา
- อินพุตอาจว่างเปล่าซึ่งในกรณีนี้คุณต้องเอาท์พุทเป็นศูนย์ (บอร์ดว่างเปล่า -> ไม่มีโรงสี)
- เนื่องจากผู้เล่นแต่ละคนมี 9 คนการป้อนข้อมูลจะไม่รวมคะแนนมากกว่า 18 แต้ม
- คุณอาจปล่อยให้จุด emtpy ในอินพุตและดังนั้นเฉพาะจุดอินพุตที่ถ่าย
- อินพุตอาจถูกสั่งในทางใดทางหนึ่ง คุณไม่สามารถพึ่งพาคำสั่งซื้อที่เฉพาะเจาะจง
- คุณอาจจะสมมติว่าอินพุตนั้นถูกต้องเสมอ ซึ่งหมายความว่าจะไม่มีชายมากกว่า 9 คนในแต่ละสีและแต่ละจุดจะไม่ซ้ำกัน
กฎระเบียบ
- ระบุรูปแบบอินพุตที่ชัดเจนที่คุณใช้ในโซลูชันของคุณ ให้ตัวอย่างการรันโปรแกรมของคุณได้รับการสนับสนุนอย่างมาก
- อนุญาตให้ใช้ฟังก์ชั่นหรือโปรแกรมเต็มรูปแบบ
- กฎเริ่มต้นสำหรับอินพุต / เอาต์พุต
- ช่องโหว่มาตรฐานใช้
- นี่คือcode-golfดังนั้นจำนวนไบต์ที่น้อยที่สุดจึงชนะ Tiebreaker เป็นการส่งก่อนหน้า
กรณีทดสอบ
รูปแบบการป้อนข้อมูลที่นี่คือรายการของสิ่งอันดับที่มีพิกัดตามตัวอย่างข้างต้นเป็นองค์ประกอบแรกและสถานะขององค์ประกอบที่สองที่เป็นจุด จุดสีขาวถูกทำเครื่องหมายเป็น "w" และจุดที่เป็นสีดำเป็น "b" จุดอื่น ๆ ทั้งหมดถูกปล่อยออกมาและว่างเปล่า
[( "a4", "W") ( "B2", "B") ( "b4", "B") ( "C4", "B") ( "D1", "W") ( "d2", "W") ( "e3", "W") ( "e4", "W") ( "e5", "W") ( "F2", "B") , ("f4", "b"), ("f6", "b"), ("g4", "w")] -> 2 [( "A1", "B") ( "a4", "B") ( "A7", "B") ( "b4", "B") ( "C4", "B") , ("d3", "w"), ("d2", "w"), ("d1", "w")] -> 3 [] -> 0 [("b4", "b"), ("a4", b "), (" c4 ", w")] -> 0 [("b4", "b"), ("a4", b "), (" c4 ", b")] -> 1 [("a1", "b"), ("a4", "b"), ("a7", "b"), ("b2", "b"), ("b4", "b") , ("b6", "b"), ("c3", "b"), ("c4", "b"), ("c5", "b"), ("e3", "w") , ("e4", "w"), ("e5", "w"), ("f2", "w"), ("f4", "w"), ("f6", "w") , ("g1", "w"), ("g4", "w"), ("g7", "w")] -> 8
Happy Coding!
d3
และd5
ไม่ได้เชื่อมต่อ กฎบอกว่า: Three men of the same color form a mill when they are in a straight row of connected points.
. ฉันได้เพิ่มตัวอย่างบางส่วนในส่วนนี้เพื่อให้ชัดเจนขอบคุณสำหรับความคิดเห็น!