Peg solitaire là một trò chơi phổ biến thường được chơi một mình. Trò chơi bao gồm một số chốt và một bảng được chia thành một lưới - thường thì bảng không phải là hình chữ nhật nhưng đối với thử thách này, chúng tôi sẽ giả sử như vậy.
Mỗi di chuyển hợp lệ cho phép một người loại bỏ một chốt duy nhất và mục tiêu là chơi theo cách, sao cho có một chốt duy nhất còn lại. Bây giờ, một di chuyển hợp lệ phải theo một hướng duy nhất (bắc, đông, nam hoặc đông) và nhảy qua một chốt có thể được gỡ bỏ.
Ví dụ
Đặt .
các khoảng trống trên bảng và các số là các chốt, bước di chuyển sau sẽ di chuyển 1
sang phải và xóa 2
khỏi bảng:
..... .....
.12.. -> ...1.
..... .....
Di chuyển sẽ luôn phải nhảy qua một chốt duy nhất, vì vậy những điều sau đây không hợp lệ:
...... ......
.123.. -> ....1.
...... ......
Dưới đây là một số cấu hình hợp lệ sau mỗi lần di chuyển:
...1... ...1... ..71... ..71...
.2.34.5 ---> .24...5 ---> .2....5 ---> ......5
.678... (4W) .678... (7N) .6.8... (2S) ...8...
....... ....... ....... .2.....
Thử thách
Đưa ra một cấu hình bảng ban đầu và một số cấu hình khác, xuất ra liệu có thể đạt được cấu hình khác hay không bằng cách di chuyển các chốt xung quanh như mô tả ở trên.
Quy tắc
- Đầu vào sẽ là một ma trận / danh sách các danh sách / ... của các giá trị biểu thị một khoảng trống (ví dụ: 0 hoặc sai) hoặc các chốt (ví dụ: khác không hoặc đúng)
- bạn có thể giả sử và
- bạn có thể sử dụng true / non-zero để chỉ ra các khoảng trống và ngược lại nếu nó giúp
- Đầu ra sẽ có hai riêng biệt (một trong những giá trị có thể khác nhau) giá trị chỉ ra cho dù cuối cấu hình có thể đạt được (ví dụ. Falsy / truthy ,
[]
/[list of moves]
..)
Các trường hợp thử nghiệm
initial goal -> output
[[1,0,0],[1,1,0],[0,1,0]] [[0,0,0],[0,1,0],[1,1,0]] -> True
[[1,0,0],[1,1,0],[0,1,0]] [[0,0,1],[0,1,1],[0,0,0]] -> False
[[0,0,0],[1,0,0],[0,0,0]] [[0,0,0],[0,0,1],[0,0,0]] -> False
[[0,0,0],[1,1,0],[0,0,0]] [[0,0,0],[0,1,1],[0,0,0]] -> False
[[0,0,0,0],[1,1,1,0],[0,0,0,0]] [[0,0,0,0],[0,0,0,1],[0,0,0,0]] -> False
[[1,0,0],[1,1,0],[1,1,1],[1,1,1]] [[0,0,1],[0,1,0],[1,0,0],[0,0,1]] -> True
[[1,0,0],[1,1,0],[1,1,1],[1,1,1]] [[1,0,0],[0,0,0],[0,0,0],[0,0,0]] -> False
[[1,0,1,1],[1,1,0,0],[1,1,1,0],[1,0,1,0]] [[0,0,1,0],[1,0,0,0],[1,0,1,0],[1,0,0,1]] -> True
[[1,0,1,1],[1,1,0,0],[1,1,1,0],[1,0,1,0]] [[0,0,0,0],[0,0,0,0],[0,0,1,0],[0,0,0,0]] -> False
[[1,0,0,0],[1,1,0,0],[1,1,1,0],[1,0,1,0]] [[0,0,0,0],[0,0,0,0],[0,0,1,0],[0,0,0,0]] -> True
[[0,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,0]] [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,1]] -> False
[[0,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,0]] [[1,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] -> False
[[0,0,0,1,0,0,0],[0,1,0,1,1,0,1],[0,1,1,1,0,0,0],[0,0,0,0,0,0,0]] [[0,0,0,1,0,0,0],[0,1,0,1,1,0,1],[0,1,1,1,0,0,0],[0,0,0,0,0,0,0]] -> True
[[0,0,0,1,0,0,0],[0,1,0,1,1,0,1],[0,1,1,1,0,0,0],[0,0,0,0,0,0,0]] [[0,0,0,1,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]] -> True
[[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[1,1,1,1,1,1,1],[1,1,1,0,1,1,1],[1,1,1,1,1,1,1],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0]] [[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[1,1,1,1,1,1,1],[1,1,1,1,0,0,1],[1,1,1,1,1,1,1],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0]] -> True
[[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[1,1,1,1,1,1,1],[1,1,1,0,1,1,1],[1,1,1,1,1,1,1],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0]] [[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,1,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]] -> True
7
trong ví dụ của bạn? Tại sao nó biến mất sau khi2
di chuyển về phía nam?