Tổng quat
Pearls (hay Masyu) là một trò chơi logic được chơi trên lưới. Có những viên ngọc trai đen và trắng được đặt trên lưới. Đối tượng là tạo thành một vòng đơn, khép kín đi qua mỗi viên ngọc chỉ sử dụng các đoạn thẳng và góc vuông.
Có một số quy tắc chi phối cách vòng lặp tương tác với ngọc trai:
- Ngọc trai trắng phải được đi thẳng qua, nhưng vòng lặp phải quay trong ô trước và / hoặc ô tiếp theo trên đường đi của nó.
- Ngọc trai đen phải được bật , nhưng vòng lặp phải đi thẳng qua các tế bào tiếp theo và trước đó trên đường đi của nó.
- Vòng lặp không được vượt qua hoặc giao nhau. Tất cả các ô có chính xác không hoặc hai lần nhập / thoát vòng lặp.
Một câu đố ví dụ từ Wikipedia (và giải pháp của nó):
Mục tiêu của bạn là để giải quyết một câu đố nhất định. Nếu có nhiều giải pháp khả thi, bạn đưa ra giải pháp nào không quan trọng.
Đầu vào
Đầu vào sẽ là một lưới vuông chưa giải quyết . Ví dụ hiển thị ở trên sẽ trông như thế này:
..w.w.....
....w...b.
..b.b.w...
...w..w...
b....w...w
..w....w..
..b...w...
w...b....w
......ww..
..b......b
w
là một viên ngọc trắng, b
là một viên ngọc đen và .
là một ô trống.
Giả sử đầu vào là hợp lệ. Điều này có nghĩa là nó được hình thành tốt, và ít nhất một giải pháp là có thể. Tất cả các câu đố hợp lệ ít nhất là 3x3 và chứa ít nhất một viên ngọc.
Đầu ra
Đầu ra là một chuỗi tọa độ đại diện cho đường dẫn. Góc trên bên trái của lưới là 0 0
, phía trên bên phải là n-1 0
, trong đó n là chiều rộng của lưới.
Một đường dẫn chỉ đơn giản là một chuỗi các tọa độ được sắp xếp:
x1 y1 x2 y2 x3 y3 ...
Đường dẫn được coi là đã đóng, vì vậy bạn không cần lặp lại tọa độ đầu tiên ở cuối, nhưng không có hình phạt nào cho việc đó.
Đầu ra phải bao gồm ít nhất tất cả các góc trong đường dẫn. Bạn không phải xuất mọi ô trên đường dẫn nếu không có ngã rẽ. Chẳng hạn, đầu ra cho ví dụ có thể bắt đầu bằng:
1 0 5 0 5 1 ...
hoặc là
1 0 2 0 3 0 4 0 5 0 5 1 ...
Đầu ra không được chứa bất kỳ ô nào không có trong đường dẫn. Bạn có thể bắt đầu tại bất kỳ ô nào trong đường dẫn.
Đoạn trích
Đây là một đoạn bạn có thể sử dụng để trực quan hóa giải pháp của mình. Chỉ cần dán vào lưới bạn đang làm việc và đường dẫn bạn xuất ra. Tôi biết rằng thật đau đớn khi xem mã của tôi, vì vậy tôi chỉ đề nghị bạn không nên;)
Các trường hợp thử nghiệm
Các trường hợp thử nghiệm này hiển thị một đầu ra có thể cho mỗi đầu vào (ngoại trừ đầu ra cuối cùng, được hiển thị chưa được giải quyết). Có thể có các đường dẫn hợp lệ khác, bạn có thể đi CW hoặc CCW hoặc bắt đầu ở một điểm khác, v.v. Các giải pháp sẽ có thể giải quyết các trường hợp thử nghiệm trong vài giây / phút / giờ, không phải ngày / tuần / giờ.
...
w..
..b
0 0 1 0 2 0 2 1 2 2 1 2 0 2 0 1
.wb..b
......
..b...
w.ww..
......
b....b
0 0 2 0 2 2 4 2 4 1 3 1 3 0 5 0 5 5 3 5 3 4 4 4 4 3 1 3 1 4 2 4 2 5 0 5 0 2 1 2 1 1 0 1
.....w.b.w..
ww..b...b...
.w.....b....
...wbww..b.b
....b.......
w.w.........
..w......b.b
.....bb.....
.....b.....w
w.ww..b.....
...w......w.
b..w.....b..