Lý lịch
Mu Torere là một trò chơi là một trong hai trò chơi duy nhất được người Maori ở New Zealand chơi trước khi có ảnh hưởng của châu Âu. Điều này làm cho nó trở thành một trò chơi rất độc đáo ở chỗ nó có "tiêu chí chiến thắng khách quan" và luật chơi khác với hầu hết các trò chơi khác đang tồn tại.
Trò chơi:
Bảng là một hình bát giác. Có các kết nối giữa mỗi đỉnh liền kề và có một nút trung tâm được kết nối với tất cả các đỉnh. Tại bất kỳ thời điểm nào, tám trong số chín nút bị chiếm đóng bởi đá. Khi bắt đầu, có bốn viên đá trắng và bốn viên đá màu đen, mỗi viên đá chiếm một nửa hình bát giác, với nút trung tâm trống. Đen di chuyển trước.
Mỗi lượt, người chơi có thể di chuyển một trong những viên đá của mình dọc theo một trong 16 cạnh từ một nút đến nút trống. Một hòn đá chỉ có thể được di chuyển từ một nút bên ngoài đến nút trung tâm nếu hòn đá nằm cạnh hòn đá của đối thủ.
Một người chơi thua khi anh ta không thể thực hiện một động thái hợp pháp, điều này xảy ra khi không có cạnh nào nối một hòn đá với nút trống.
Đây là một trang web giải thích các quy tắc (với một sơ đồ) và cung cấp một số phân tích.
Các thách thức
Thử thách của bạn là viết chương trình ngắn nhất có thể chơi một trò chơi hoàn hảo của Mu Torere trước một đối thủ người. Chương trình của bạn sẽ có thể hiển thị và cập nhật bảng trò chơi, thực hiện di chuyển và nhận di chuyển từ một đối thủ của con người. Quan trọng nhất, nó nên chơi một trò chơi hoàn hảo.
Trò chơi hoàn hảo?
Vâng, trò chơi hoàn hảo. Tôi đã thực hiện một số phân tích trò chơi và tôi thấy rằng trò chơi kéo dài trong một khoảng thời gian vô hạn nếu được chơi hoàn hảo bởi cả hai bên. Điều này có nghĩa là chương trình của bạn sẽ không bao giờ mất. Ngoài ra, chương trình của bạn sẽ có thể buộc một chiến thắng bất cứ khi nào đối thủ của con người phạm sai lầm cho phép chương trình buộc một chiến thắng. Đối với cách chương trình của bạn tìm thấy bước đi hoàn hảo, điều này tùy thuộc vào bạn.
Chi tiết
Sau mỗi lần di chuyển (và khi bắt đầu trò chơi), chương trình của bạn sẽ in bảng trò chơi. Tuy nhiên, bạn chọn hiển thị bảng, nó phải hiển thị tất cả các nút và được kết nối đầy đủ (tất cả 16 đường kết nối phải được vẽ không có đường chéo). Khi bắt đầu, bảng nên có vị trí bắt đầu chính xác. Một cách để thực hiện điều này là bằng cách làm cho bảng trò chơi thành một hình vuông.
w-w-w
|\|/|
b-o-w
|/|\|
b-b-b
Hai màu đen và trắng, hoặc tối / sáng. Bảng phải cho biết các nút nào bị chiếm bởi các mảnh của người chơi, chẳng hạn như đánh dấu chúng bằng "b" hoặc "w" và nút nào bị bỏ trống. Những người tham gia được khuyến khích (nhưng không bắt buộc) để làm cho bảng trò chơi có nhiều đồ họa hơn là văn bản thuần túy.
Bảng trò chơi của bạn nên có một hệ thống đánh số cung cấp cho mỗi nút một số duy nhất. Bạn có thể chọn đánh số bảng theo bất kỳ cách nào bạn thích, nhưng nó sẽ được giải thích trong câu trả lời của bạn hoặc bởi chương trình. Bảng vuông có thể được đánh số như sau:
1-2-3
|\|/|
4-5-6
|/|\|
7-8-9
Con người là người đầu tiên di chuyển. Đầu vào của anh ấy sẽ là một số duy nhất. Đây sẽ là số nút nơi đá di chuyển hiện tại. Nếu tôi muốn di chuyển một hòn đá từ nút 4 sang nút 5 trống, tôi sẽ gõ a 4
. 5 được ngụ ý vì nó là nút trống duy nhất.
Giả sử rằng con người sẽ luôn luôn thực hiện một động thái hợp pháp.
Sau khi con người thực hiện di chuyển của mình, một bảng cập nhật nên được in. Sau khi chương trình của bạn quyết định di chuyển hợp pháp, nó sẽ in một bảng cập nhật khác, và sau đó đợi con người bước vào một động thái khác.
Chương trình của bạn nên chấm dứt một khi nó đã thắng.
Ghi chú
Áp dụng quy tắc golf tiêu chuẩn, không truy cập các tệp bên ngoài, v.v. Ngoài ra, tôi sẽ áp dụng giới hạn thời gian linh hoạt là 15 giây (trên một máy hợp lý) để chương trình của bạn thực hiện từng bước di chuyển. Như đã nói, trò chơi này có khả năng hình thành các vòng lặp vô hạn và tôi không muốn một tìm kiếm đầu tiên đi sâu vào một vòng lặp vô hạn.