Thử thách này là về trò chơi Tic Tac Toe, nhưng nó được chơi trên một hình xuyến.
Cách chơi
Để tạo bảng trò chơi cần thiết, bạn bắt đầu với bảng trò chơi Tic Tac Toe thông thường. Đầu tiên gấp nó thành một hình trụ bằng cách nối cạnh trái và cạnh phải. Sau đó gấp nó thành hình xuyến bằng cách nối cạnh trên và cạnh dưới. Đây là một hình ảnh đơn giản của một bảng trò chơi như vậy với một vài động tác được chơi (kỹ năng Sick Paint!).
Các quy tắc của Tic Tac Toe trên hình xuyến cũng giống như Tic Tac Toe thông thường. Mỗi người chơi đặt xen kẽ Xs và Os. Cái đầu tiên có 3 ký hiệu giống nhau trong một hàng, một cột hoặc một trong một đường chéo thắng.
Vì một hình xuyến khá khó để hình dung, chúng tôi chỉ cần chiếu tấm bảng lên một tờ giấy. Bây giờ chúng ta có thể chơi trò chơi như Tic Tac Toe thông thường. Sự khác biệt duy nhất là, bạn cũng có thể giành chiến thắng với 3 biểu tượng giống nhau trong một đường chéo bị hỏng. Ví dụ Người chơi 1 (X) thắng bảng sau. Bạn có thể thấy điều này một cách dễ dàng bằng cách thay đổi góc nhìn trên hình xuyến một chút.
Nếu bạn quan tâm, bạn có thể chơi Tic Tac Toe trên Torus tại Torus Games . Có phiên bản Windows, Mac và Android.
Trò chơi tối ưu
Trong thử thách này đã quan tâm đến các trò chơi tối ưu. Một trò chơi tối ưu là một trò chơi, trong đó cả hai người chơi đều chơi một chiến lược tối ưu. Trên bảng Tic Tac Toe thông thường, các trò chơi tối ưu luôn kết thúc với tỷ số hòa. Hấp dẫn trên bảng hình xuyến luôn là người chơi đầu tiên giành chiến thắng. Trong thực tế, một trò chơi trên bảng hình xuyến không bao giờ có thể kết thúc với tỷ số hòa (cũng có thể nếu người chơi chơi không tối ưu).
Chiến lược tối ưu thực sự dễ dàng:
- Nếu bạn có thể giành chiến thắng bằng cách đặt biểu tượng của bạn, hãy làm điều đó.
- Mặt khác, nếu đối thủ của bạn có hai biểu tượng trong một hàng / cột / đia chéo, hãy thử chặn anh ta. Nếu không, hãy làm những gì bạn muốn.
- Nếu không hãy làm những gì bạn muốn.
Mỗi trò chơi tối ưu bao gồm chính xác 7 động tác và những động tác này có thể được mô tả theo cách sau:
- Người chơi 1 đặt X ở bất cứ đâu trên bảng (9 lựa chọn)
- Người chơi 2 đặt một chữ O ở bất cứ đâu trên bảng (8 lựa chọn)
- Người chơi 1 đặt X ở bất cứ đâu trên bảng (7 lựa chọn)
- Di chuyển của người chơi 2 có thể bị ép buộc (1 lựa chọn), nếu không, anh ta đặt O ở bất cứ đâu (6 lựa chọn)
- Di chuyển của người chơi 1 là bắt buộc (1 lựa chọn)
- Người chơi 2 bị bắt trong một ngã ba (Người chơi 1 có thể thắng theo hai cách khác nhau), vì vậy Người chơi 2 phải chặn Người chơi 1 theo một cách (2 lựa chọn)
- Người chơi 1 đặt chiêu cuối của mình và thắng (1 lựa chọn)
Có 9 * 8 * 1 * 6 * 1 * 2 * 1 + 9 * 8 * 6 * 1 * 1 * 2 * 1 = 1728 trò chơi tối ưu khác nhau trên bảng dự kiến của chúng tôi. Ở đây bạn có thể thấy một trò chơi tối ưu điển hình:
Nếu chúng ta dán nhãn cho mỗi ô của bảng bằng các chữ số 0-8
, chúng ta có thể mô tả trò chơi này bằng các chữ số 3518207
. Đầu tiên a X là các vị trí trong ô 3 (hàng giữa, cột bên trái), hơn một O trong ô 5 (hàng giữa, cột bên phải), hơn một X trong ô 1 (hàng trên, cột giữa), ...
Sử dụng ký hiệu chữ số này, chúng tôi tự động tạo ra một đơn đặt hàng. Bây giờ chúng tôi có thể sắp xếp tất cả 1728 trò chơi tối ưu và chúng tôi nhận được danh sách:
Game 0000: 0123845
Game 0001: 0123854
Game 0002: 0124735
Game 0003: 0124753
Game 0004: 0125634
...
Game 0674: 3518207
...
Game 1000: 5167423
Game 1001: 5167432
Game 1002: 5168304
...
Game 1726: 8765034
Game 1727: 8765043
Thử thách
Danh sách này là một phần công việc của bạn. Bạn sẽ nhận được một số k
trong khoảng từ 0 đến 1727 và bạn phải trả lại k
trò chơi thứ năm theo ký hiệu số của danh sách được sắp xếp đó.
Viết hàm hoặc chương trình, nhận số k
(số nguyên) tính toán trò chơi tương ứng. Bạn có thể đọc đầu vào thông qua STDIN, đối số dòng lệnh, đối số nhắc hoặc hàm và in kết quả (7 chữ số) ở định dạng có thể đọc được (ví dụ 0123845
hoặc [0, 1, 2, 3, 8, 4, 5]
) hoặc trả về bằng chuỗi (định dạng có thể đọc được của con người) hoặc số nguyên (chứa tất cả các chữ số trong cơ sở 10), hoặc trong bất kỳ định dạng mảng / danh sách.
Loại thử thách là golf-code. Do đó mã ngắn nhất sẽ thắng.