บทนำ
เกมเซียงฉีหรือที่รู้จักกันในชื่อหมากรุกจีนเป็นเกมหมากรุกที่ได้รับความนิยมในประเทศจีนเวียดนามไต้หวันและประเทศอื่น ๆ ในเอเชียตะวันออก สีของทั้งสองฝ่ายในเซียงกิเป็นสีแดงและดำ เซียงกิมีเจ็ดชิ้น: นายพล ( G
), ที่ปรึกษา ( A
), ช้าง ( E
), ม้า ( H
), ราชรถ ( R
), ปืนใหญ่ ( C
), และทหาร ( S
) สำหรับจุดประสงค์ของการท้าทายชิ้นส่วนตัวพิมพ์ใหญ่ถือว่าเป็นสีแดงและตัวพิมพ์เล็กเป็นสีดำ ชิ้นส่วนเหล่านี้ส่วนใหญ่มีความเท่าเทียมกันในหมากรุกตะวันตก แต่มีชิ้นเดียวที่ไม่เหมือนใคร: ปืนใหญ่
ปืนใหญ่ย้ายเช่นโกงในเกมหมากรุกหรือรถม้าในหมากรุกเป็น (ย้ายจำนวนของช่องว่างในทั้ง X หรือแกน Y ใด ๆ ) แต่ไม่สามารถโจมตีด้วยวิธีนี้ แต่มันโจมตีโดยการกระโดดพร้อม X หรือ Y แกน (แบบเดียวกับที่มันเคลื่อน) มากกว่าหนึ่งชิ้นส่วนของสีใด ๆ (เพื่อนหรือศัตรู) และเชื่อมโยงไปเกี่ยวกับชิ้นส่วนที่อยู่ตรงข้ามสีซึ่งมันก็จับ โปรดทราบว่าเช่นเดียวกับหมากรุกและชิ้นเซียงกิทั้งหมดปืนใหญ่ไม่สามารถจับชิ้นสีของตัวเองได้
ตัวอย่างเช่นในแผนภาพต่อไปนี้ช่องว่างที่ปืนใหญ่ ( C
) สามารถเคลื่อนย้ายได้ถูกทำเครื่องหมายด้วย*
และพื้นที่ที่สามารถกระโดดและจับภาพได้จะถูกทำเครื่องหมายด้วยX
โดยสมมติว่ามีชิ้นส่วนสีดำ / ตัวพิมพ์เล็กอยู่ที่นั่น
....X....
.........
.........
....h....
....*....
****C**aX
....E....
....X....
....g....
....R....
ท้าทาย
เขียนโปรแกรมหรือฟังก์ชั่นที่กำหนดบอร์ด xiangqi และพิกัดของปืนใหญ่บนบอร์ดนั้นเป็นอินพุตเอาต์พุตรายการของพิกัดที่ปืนใหญ่สามารถเคลื่อนที่หรือกระโดดได้
รูปแบบสำหรับ I / O ทั้งหมดนั้นมีความยืดหยุ่น
รูปแบบที่ยอมรับได้สำหรับกระดานหมากรุก ได้แก่ สตริงขึ้นบรรทัดใหม่คั่นรายการของสตริงหรือสตริงกับแยกอื่น ๆ aceghrsACEGHRS.
ที่ไม่ได้อยู่ใน คุณอาจคิดว่าบอร์ดจะมีขนาด 9x10 เสมอขนาดของบอร์ดเซียงกิ
เนื้อหาของคณะกรรมการจะประกอบด้วยระยะเวลา ( .
) แสดงถึงจุดที่ว่างเปล่าบนกระดานและตัวละครที่เป็นตัวแทนของชิ้นส่วน การแมปตัวต่ออักขระเป็นดังนี้:
A -> advisor
C -> cannon
E -> elephant
G -> general
H -> horse
R -> chariot
S -> soldier
ตัวอักษรตัวพิมพ์ใหญ่แทนชิ้นส่วนสีแดงและตัวอักษรตัวพิมพ์เล็กแทนชิ้นส่วนสีดำ ตัวละครที่ไม่ได้ระบุไว้ที่นี่ (เช่นไม่ได้อยู่ในaceghrsACEGHRS.
) จะไม่ปรากฏในกระดาน
รูปแบบของพิกัดอินพุตมีความยืดหยุ่นและไม่จำเป็นต้องตรงกับรูปแบบของพิกัดเอาต์พุต มันสามารถเป็นรายการของสององค์ประกอบจำนวนเต็ม, 2-tuple, สองตัวเลขด้วยตัวคั่นใด ๆ หรือสองตัวอักษรตัวอย่างเช่น มันอาจเป็นดัชนี 0 หรือดัชนี 1 ก็ได้ คุณอาจสันนิษฐานว่าพิกัดบนกระดานมักจะแก้ไขเป็นปืนใหญ่ ( C
หรือc
)
พิกัดที่ปืนใหญ่สามารถกระโดดและย้ายจะต้องปรากฏในรายการเดียวกันในเอาต์พุต ไม่จำเป็นต้องแยกความแตกต่างระหว่างทั้งสอง รูปแบบที่ยอมรับได้สำหรับพิกัดเอาต์พุตแต่ละรายการจะเหมือนกับรูปแบบอินพุต coord พิกัดอาจคั่นด้วยบรรทัดใหม่เอาท์พุทเป็นรายการหรือการแสดงอื่น ๆ ไม่จำเป็นต้องมีคำสั่งเฉพาะ คำสั่งไม่จำเป็นต้องกำหนดขึ้น
โปรดทราบว่าการกระโดดลงบนชิ้นส่วนที่มีสีเดียวกัน (กล่อง) ของปืนใหญ่นั้นไม่ถูกกฎหมายดังนั้นจึงไม่สามารถปรากฏในเอาต์พุต
กรณีทดสอบ
โปรดทราบว่าไม่ใช่ทุกกรณีทดสอบที่เป็นไปได้ในตำแหน่งเซียงกิ
Input board
Input coordinate (0-indexed)
List of output coordinates
.........
.........
.........
.........
.........
....C....
.........
.........
.........
.........
(4, 5)
[(0, 5), (1, 5), (2, 5), (3, 5), (5, 5), (6, 5), (7, 5), (8, 5), (4, 0), (4, 1), (4, 2), (4, 3), (4, 4), (4, 6), (4, 7), (4, 8), (4, 9)]
.........
.....G...
.........
.........
.....e...
.........
.........
h..R.c..S
.....a...
.........
(5, 7)
[(4, 7), (6, 7), (7, 7), (5, 6), (5, 5), (5, 1)]
..s......
..A...e..
.........
EACCcsh.H
..r......
.....S...
......s..
....C....
..g......
(2, 3)
[(2, 0), (2, 2), (4, 3), (2, 9)]
rheagaehr
.........
.c.....c.
s.s.s.s.s
.........
.........
S.S.S.S.S
.C.....C.
.........
RHEAGAEHR
(7, 7)
[(2, 7), (3, 7), (4, 7), (5, 7), (6, 7), (8, 7), (7, 0), (7, 3), (7, 4), (7, 5), (7, 6), (7, 8)]
เกณฑ์การให้คะแนน
นี่คือ รหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุด (เป็นไบต์) จะชนะ มีความสุขในการเล่นกอล์ฟ!