เมื่อเร็ว ๆ นี้ผมได้รับการแนะนำให้รู้จักกับเกมปริศนาที่เรียกว่าSolitaire หมากรุก ฉันจะสรุปกฎที่นี่:
- กระดานเป็นกระดานหมากรุกขนาด 4x4
- ทุกชิ้นมีสีเดียวกัน (ไม่มีทีม) และทุกชิ้นสามารถจับภาพชิ้นอื่นได้
- ทุกการเคลื่อนไหวจะต้องมีการจับ ไม่มีการย้ายไปที่ช่องว่าง
- จะต้องมีชิ้นเดียวที่เหลืออยู่ในตอนท้าย
- ทุกชิ้นงานเคลื่อนไหวเหมือนกับที่ทำในหมากรุกโดยมีการดัดแปลงเพียงตัวเดียว: ตัวจำนำสามารถจับได้ทุกทิศทาง (ซึ่งในทางเทคนิคทำให้เป็นเฟอร์ซ ) เพื่อประโยชน์ของผู้ที่ไม่ทราบฉันได้รวมแผนภาพการเคลื่อนไหว
- ไม่มีกฎของหมากรุกอื่น ๆ (เช่นเช็ค, การขว้าง ฯลฯ ) ที่นี่ มันเกี่ยวกับการจับกุม
คิง (K)
K * . . | * K * . | * * * .
* * . . | * * * . | * K * .
. . . . | . . . . | * * * .
. . . . | . . . . | . . . .
ราชินี (Q)
Q * * * | * Q * * | * * * .
* * . . | * * * . | * Q * *
* . * . | . * . * | * * * .
* . . * | . * . . | . * . *
โกง (R)
R * * * | * R * * | . * . .
* . . . | . * . . | * R * *
* . . . | . * . . | . * . .
* . . . | . * . . | . * . .
บิชอป (B)
B . . . | . B . . | * . * .
. * . . | * . * . | . B . .
. . * . | . . . * | * . * .
. . . * | . . . . | . . . *
อัศวิน (N)
N . . . | . N . . | . . . *
. . * . | . . . * | . N . .
. * . . | * . * . | . . . *
. . . . | . . . . | * . * .
จำนำ (P)
P . . . | . P . . | * . * .
. * . . | * . * . | . P . .
. . . . | . . . . | * . * .
. . . . | . . . . | . . . .
อินพุต / เอาต์พุต
สำหรับการอ้างอิงจะใช้ตัวต่อปริศนาตัวอย่างจากหน้าเว็บ Solitaire หมากรุก:
. . . .
. B . .
R P . .
. . . N
การแก้ปัญหาคือการเอาเบี้ยไปกับอัศวินจากนั้นนำอัศวินเข้ามาด้วยการโกงและในที่สุดก็นำอธิการไปด้วยการโกง
อินพุต
อินพุตต้องอยู่ในหนึ่งในสามรูปแบบ คุณมีอิสระที่จะเลือกสิ่งที่คุณสะดวกที่สุด
- สตริงอักขระเช่น
.....B..RP.....N
มีหรือไม่มีบรรทัดใหม่ ตัวละครที่เป็นตัวแทนของพื้นที่ว่างอาจจะเป็นตัวอักษรใด ๆKQRBNP
ที่ไม่ได้เป็นหนึ่งใน - รายการของรายการ (หรือรายการบี้) ซึ่งองค์ประกอบที่มีทั้งตัวอักษรหรือตัวเลขเช่นดังนั้น: หรือ
[['.', '.', '.', '.'], ['.', 'B', '.', '.'], ['R', 'P', '.', '.'], ['.', '.', '.', 'N']]
สำหรับอดีตตัวละครที่แสดงถึงพื้นที่ว่างอาจจะเป็นอะไรที่ไม่ได้เป็นหนึ่ง[[0, 0, 0, 0], [0, 4, 0, 0], [3, 6, 0, 0], [0, 0, 0, 5]]
KQRBNP
สำหรับหลังฉันได้ให้หมายเลขที่สอดคล้องกับอันดับของพวกเขาในรายการการเคลื่อนไหวก่อนหน้าของฉัน (1
คือราชา4
เป็นอธิการ6
เป็นเบี้ยประกัน ฯลฯ ) คุณมีอิสระที่จะเปลี่ยนหมายเลข - รายการของพิกัดที่แต่ละองค์ประกอบมีแบบฟอร์มเช่นดังนั้น:
[x, y, 'c']
[[1, 2, 'B'], [0, 1, 'R'], [1, 1, 'P'], [3, 0, 'N']]
หากคุณเลือกหนึ่งในรูปแบบอินพุตตามรายการตัวคั่นและตัวคั่นอาจเป็นอักขระที่สมเหตุสมผลและเข้าใจได้
เอาท์พุต
เอาต์พุตต้องเป็นลำดับของการย้ายหรือลำดับของสถานะกระดาน ตัวต่อบางตัวมีมากกว่าหนึ่งตัว คุณสามารถส่งออกหนึ่งหรือทั้งหมดของพวกเขา หากคุณเลือกที่จะแสดงลำดับของสถานะบอร์ดแต่ละบอร์ดจะต้องอยู่ในรูปแบบอินพุตหนึ่งในสามรูปแบบโดยมีตัวคั่นที่เหมาะสม (เช่นบรรทัดใหม่) ระหว่างพวกเขา
[[[3,0], [1,1]], [[0,1], [1,1]], [[1,1], [1,2]]]
หากคุณเลือกที่จะส่งออกลำดับการย้ายที่พวกเขาจะต้องแสดงเป็นรายการคู่ประสานงานคู่เช่นดังนั้น: [0,0]
แสดงถึงมุมล่างซ้ายและอีกครั้งการแยกและการคั่นอักขระอาจเป็นตัวเลือกที่สมเหตุสมผล
หากบอร์ดที่ระบุไม่สามารถแก้ไขได้ให้ส่งออกค่าเท็จ ( 0
สตริงว่างเปล่า ฯลฯ ) หากคณะกรรมการที่กำหนดมีน้อยกว่าสองชิ้นพฤติกรรมจะไม่ได้กำหนด
กรณีทดสอบ
หมายเหตุ: เอาต์พุตจะได้รับเป็นรายการของคู่พิกัดเท่านั้นเนื่องจากรูปแบบอื่นควรง่ายต่อการตรวจสอบความถูกต้อง (และฉันไม่อยากพิมพ์รูปแบบเอาต์พุตทั้งหมดที่เป็นไปได้) นอกจากนี้สำหรับปริศนาที่มีมากกว่าหนึ่งวิธีจะมีเพียงความเป็นไปได้เพียงทางเดียวเท่านั้น
อินพุต 1:
. . . N
. . . .
. R . .
. . B .
...N.....R....B.
[['.', '.', '.', 'N'], ['.', '.', '.', '.'], ['.', 'R', '.', '.'], ['.', '.', 'B', '.']]
[[0, 0, 0, 5], [0, 0, 0, 0], [0, 3, 0, 0], [0, 0, 4, 0]]
[[3, 3, 'N'], [1, 1, 'R'], [2, 0, 'B']]
เอาท์พุท 1:
[[[2,0], [1,1]], [[1,1], [3,3]]]
อินพุต 2:
. . . .
. B . .
R P . .
. . . N
.....B..RP.....N
[['.', '.', '.', '.'], ['.', 'B', '.', '.'], ['R', 'P', '.', '.'], ['.', '.', '.', 'N']]
[[0, 0, 0, 0], [0, 4, 0, 0], [3, 6, 0, 0], [0, 0, 0, 5]]
[[1, 2, 'B'], [0, 1, 'R'], [1, 1, 'P'], [3, 0, 'N']]
เอาท์พุท 2:
[[[3,0], [1,1]], [[0,1], [1,1]], [[1,1], [1,2]]]
อินพุต 3:
. N R .
B . . .
N . . B
. . P .
.NR.B...N..B..P.
[['.', 'N', 'R', '.'], ['B', '.', '.', '.'], ['N', '.', '.', 'B'], ['.', '.', 'P', '.']]
[[0, 5, 3, 0], [4, 0, 0, 0], [5, 0, 0, 4], [0, 0, 6, 0]]
[[1, 3, 'N'], [2, 3, 'R'], [0, 2, 'B'], [0, 1, 'N'], [3, 1, 'B'], [2, 0, 'P']]
เอาท์พุท 3:
[[[2,0], [3,1]], [[0,1], [1,3]], [[0,2], [1,3]], [[2,3], [1,3]], [[3,1], [1,3]]]
อินพุต 4:
. . . N
. . . R
R B B .
N P P .
...N...RRBB.NPP.
[['.', '.', '.', 'N'], ['.', '.', '.', 'R'], ['R', 'B', 'B', '.'], ['N', 'P', 'P', '.']]
[[0, 0, 0, 5], [0, 0, 0, 3], [3, 4, 4, 0], [5, 6, 6, 0]]
[[3, 3, 'N'], [3, 2, 'R'], [0, 1, 'R'], [1, 1, 'B'], [2, 1, 'B'], [0, 0, 'N'], [1, 0, 'P'], [2, 0, 'P']]
เอาท์พุท 4:
[[[2,1], [3,2]], [[1,1], [3,3]], [[3,2], [1,0]], [[3,3], [0,0]], [[0,1], [0,0]], [[0,0], [1,0]], [[1,0], [2,0]]]
อินพุต 5:
P . . .
. R . .
R . R .
. R . .
P....R..R.R..R..
[['P', '.', '.', '.'], ['.', 'R', '.', '.'], ['R', '.', 'R', '.'], ['.', 'R', '.', '.']]
[[6, 0, 0, 0], [0, 3, 0, 0], [3, 0, 3, 0], [0, 3, 0, 0]]
[[0, 3, 'P'], [1, 2, 'R'], [0, 1, 'R'], [2, 1, 'R'], [1, 0, 'R']]
ผลลัพธ์ 5:
[[[0,3], [1,2]], [[1,2], [2,1]], [[2,1], [1,0]], [[1,0], [0,1]]]
อินพุต 6:
. P . N
K . . .
. . B .
. . R Q
.P.NK.....B...RQ
[['.', 'P', '.', 'N'], ['K', '.', '.', '.'], ['.', '.', 'B', '.'], ['.', '.', 'R', 'Q']]
[[0, 6, 0, 5], [1, 0, 0, 0], [0, 0, 4, 0], [0, 0, 3, 2]]
[[1, 3, 'P'], [3, 3, 'N'], [0, 2, 'K'], [2, 1, 'B'], [2, 0, 'R'], [3, 0, 'Q']]
เอาท์พุท 6:
[[[3,0], [2,0]], [[2,0], [2,1]], [[3,3], [2,1]], [[2,1], [1,3]], [[0,2], [1,3]]]
[["R", [2, 0], [1, 1]], ["N", [1, 1], [3, 3]]]