(Có tồn tại một số thách thức đòi hỏi phải sử dụng chiến lược tốt nhất, nhưng ở đây chúng tôi không có. Ngay cả khi bạn có thể giành chiến thắng, bạn được phép thực hiện hòa)
Thử thách
Viết một chương trình chơi trò chơi tic-tac-toe. Nó không được thua (do đó, nó sẽ kết thúc trò chơi bằng một trận hòa hoặc bằng chiến thắng).
Phương pháp I / O được phép
- Đầu vào có thể là bảng hiện tại. Bạn có thể cho rằng tất cả các động tác trước đó của người chơi thứ 2 đã được chơi bởi động cơ của bạn.
- Đầu vào có thể là di chuyển của người chơi đầu tiên và chức năng của bạn lưu trữ các di chuyển đã xảy ra trong quá khứ. Trong trường hợp này, hàm được gọi nhiều lần, một lần cho mỗi lần di chuyển; hoặc đầu vào nhắc nhở chức năng / chương trình nhiều lần.
- Bạn được phép có thêm một đầu vào cho biết nếu bạn là người chơi đầu tiên hoặc viết hai hàm (có thể liên quan) để giải quyết vấn đề của người chơi thứ nhất và người chơi thứ hai. Nếu chương trình của bạn cần sử dụng phương thức nhập 2 (nhiều cuộc gọi), bạn có thể quyết định những gì được chuyển trong cuộc gọi đầu tiên.
- Đầu ra có thể là bảng sau lượt của bạn.
- Đầu ra có thể là động thái của bạn.
- Di chuyển có thể được biểu diễn dưới dạng một cặp số (có thể là lập chỉ mục 0 hoặc lập chỉ mục 1), một số trong phạm vi 0 ~ 8 hoặc một số trong phạm vi 1 ~ 9.
- Bảng có thể được biểu diễn dưới dạng mảng 3 × 3 hoặc mảng có độ dài 9. Ngay cả khi ngôn ngữ có mảng chỉ mục 0, bạn có thể sử dụng lập chỉ mục 1.
- Các tế bào trên lưới có thể sử dụng bất kỳ 3 giá trị khác nhau để chỉ ra
X
,O
và trống rỗng.
Tiêu chí chiến thắng
Mã ngắn nhất trong mỗi ngôn ngữ giành chiến thắng.
we can assume that all previous moves of the 2nd player were also played by our engine