Gần đây, tôi được giới thiệu một trò chơi giải đố có tên là Solitaire Chess . Tôi sẽ tóm tắt các quy tắc ở đây:
- Bảng là một bàn cờ 4 x 4.
- Tất cả các mảnh có cùng màu (không có đội) và tất cả các mảnh có thể chụp bất kỳ mảnh nào khác.
- Mỗi động thái phải là một sự nắm bắt. Không di chuyển đến các ô vuông trống.
- Phải có chính xác một mảnh còn lại ở cuối.
- Tất cả các quân cờ di chuyển chính xác như chúng làm trong cờ vua, với một sửa đổi: con tốt có thể chụp theo bất kỳ hướng chéo nào (về mặt kỹ thuật làm cho nó trở thành một ferz ). Vì lợi ích của những người có thể không biết, tôi đã bao gồm các sơ đồ chuyển động.
- Không có quy tắc nào khác của cờ vua (như kiểm tra, đúc, v.v.) áp dụng ở đây. Đó là tất cả về việc bắt giữ.
Vua (K)
K * . . | * K * . | * * * .
* * . . | * * * . | * K * .
. . . . | . . . . | * * * .
. . . . | . . . . | . . . .
Nữ hoàng (Q)
Q * * * | * Q * * | * * * .
* * . . | * * * . | * Q * *
* . * . | . * . * | * * * .
* . . * | . * . . | . * . *
Rook (R)
R * * * | * R * * | . * . .
* . . . | . * . . | * R * *
* . . . | . * . . | . * . .
* . . . | . * . . | . * . .
Giám mục (B)
B . . . | . B . . | * . * .
. * . . | * . * . | . B . .
. . * . | . . . * | * . * .
. . . * | . . . . | . . . *
Hiệp sĩ (N)
N . . . | . N . . | . . . *
. . * . | . . . * | . N . .
. * . . | * . * . | . . . *
. . . . | . . . . | * . * .
Cầm đồ (P)
P . . . | . P . . | * . * .
. * . . | * . * . | . P . .
. . . . | . . . . | * . * .
. . . . | . . . . | . . . .
Đầu ra đầu vào
Để tham khảo, câu đố mẫu từ trang web Solitaire Chess sẽ được sử dụng:
. . . .
. B . .
R P . .
. . . N
Giải pháp là đi cầm đồ với hiệp sĩ, sau đó lấy hiệp sĩ với tân binh, và cuối cùng là giám mục với tân binh.
Đầu vào
Đầu vào phải ở một trong ba hình thức; bạn có thể tự do chọn một trong những thuận tiện nhất cho bạn.
- Một chuỗi các ký tự như
.....B..RP.....N
, có hoặc không có dòng mới. Ký tự đại diện cho một khoảng trắng có thể là bất kỳ ký tự nào không phải là một trong số đóKQRBNP
. - Một danh sách các danh sách (hoặc một danh sách dẹt) trong đó các phần tử là ký tự hoặc số, như vậy:
[['.', '.', '.', '.'], ['.', 'B', '.', '.'], ['R', 'P', '.', '.'], ['.', '.', '.', 'N']]
hoặc[[0, 0, 0, 0], [0, 4, 0, 0], [3, 6, 0, 0], [0, 0, 0, 5]]
. Đối với trước đây, nhân vật đại diện cho một không gian trống có thể là bất cứ điều gì không phải là một trong số đóKQRBNP
. Về sau, tôi đã đưa ra các mảnh tương ứng với thứ hạng của chúng trong danh sách di chuyển trước đây của tôi (1
là một vị vua,4
là một giám mục,6
là một con tốt, v.v.). Bạn được tự do thay đổi cách đánh số. - Một danh sách các tọa độ trong đó mỗi phần tử có dạng
[x, y, 'c']
, như vậy :[[1, 2, 'B'], [0, 1, 'R'], [1, 1, 'P'], [3, 0, 'N']]
.
Nếu bạn chọn một trong các định dạng đầu vào dựa trên danh sách, dấu phân cách và dấu phân cách có thể là bất kỳ ký tự hợp lý và dễ hiểu nào.
Đầu ra
Đầu ra phải là một chuỗi các bước di chuyển hoặc một chuỗi các trạng thái bảng. Một số câu đố có nhiều hơn một giải pháp; bạn có thể xuất một hoặc tất cả chúng. Nếu bạn chọn xuất một chuỗi các trạng thái bảng, mỗi bảng phải ở một trong ba định dạng đầu vào, với một dấu tách hợp lý (chẳng hạn như dòng mới) giữa chúng.
Nếu bạn chọn xuất một chuỗi các bước di chuyển, chúng phải được thể hiện dưới dạng một danh sách các cặp tọa độ, như vậy : [[[3,0], [1,1]], [[0,1], [1,1]], [[1,1], [1,2]]]
. [0,0]
đại diện cho góc dưới bên trái, và một lần nữa, phân tách và phân định các ký tự có thể là bất kỳ lựa chọn hợp lý nào.
Nếu một bảng nhất định không thể được giải quyết, hãy xuất bất kỳ giá trị giả nào ( 0
, chuỗi trống, v.v.). Nếu một bảng nhất định có ít hơn hai mảnh, hành vi không được xác định.
Các trường hợp thử nghiệm
Lưu ý: các đầu ra chỉ được đưa ra dưới dạng danh sách các cặp tọa độ vì các định dạng khác khá dễ kiểm tra tính chính xác (và tôi không cảm thấy muốn gõ tất cả các định dạng đầu ra có thể). Ngoài ra, đối với các câu đố có nhiều hơn một giải pháp, chỉ có một khả năng được cung cấp.
Đầu vào 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']]
Đầu ra 1:
[[[2,0], [1,1]], [[1,1], [3,3]]]
Đầu vào 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']]
Đầu ra 2:
[[[3,0], [1,1]], [[0,1], [1,1]], [[1,1], [1,2]]]
Đầu vào 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']]
Đầu ra 3:
[[[2,0], [3,1]], [[0,1], [1,3]], [[0,2], [1,3]], [[2,3], [1,3]], [[3,1], [1,3]]]
Đầu vào 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']]
Đầu ra 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]]]
Đầu vào 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']]
Đầu ra 5:
[[[0,3], [1,2]], [[1,2], [2,1]], [[2,1], [1,0]], [[1,0], [0,1]]]
Đầu vào 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']]
Đầu ra 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]]]