Tạo chương trình ngắn nhất để kiểm tra xem ai đã giành được trong một n d tic tac toe trò chơi.
Chương trình của bạn sẽ hoạt động khi n
(chiều rộng) và d
(số thứ nguyên) nằm trong các phạm vi sau:
n∈[3,6]∩ℕ ie a number from this list: 3,4,5,6
d∈[2,5]∩ℕ ie a number from this list: 2,3,4,5
n = 3; d = 2
(3 2 tức là 3 bằng 3):
[][][]
[][][]
[][][]
n = 3; d = 3
(3 3 tức là 3 bằng 3 bởi 3):
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
n = 6; d = 2
(6 2 tức là 6 bằng 6):
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
Và như thế.
Chiến thắng (Nếu bạn đã chơi đủ ngón chân tic tac đa chiều, điều này cũng tương tự.)
Để có được chiến thắng, một người chơi phải có tất cả các ô vuông liền kề dọc theo một hàng. Đó là, người chơi đó phải n
di chuyển trên một dòng để trở thành người chiến thắng.
Liền kề:
- mỗi ô là một điểm; ví dụ (0,0,0,0,0) là một điểm trong
d=5
- gạch liền kề là gạch sao cho cả hai đều trên cùng một khối d-cube. Nói cách khác, khoảng cách Ch Quashev giữa các ô là 1.
- nói cách khác, nếu một điểm
p
tiếp giáp với một điểmq
, thì mọi tọa độ trongp
s tọa độ tương ứng sẽq
khác nhau không quá một điểm. Ngoài ra, ít nhất trên cặp tọa độ khác nhau bởi chính xác một.
Dòng:
- Các dòng được xác định bởi các vectơ và gạch. Một dòng là mỗi ô được đánh bởi phương trình:
p0 + t
<
some vector with the same number of coordinates as p0>
Đầu vào :
Đầu vào sẽ là STDIN. Dòng đầu tiên sẽ là hai số n
và d
ở dạng n,d
.
Sau đó sẽ là một dòng bao gồm các tọa độ chỉ định các di chuyển đã được thực hiện. Các tọa độ sẽ được liệt kê dưới dạng : 1,1;2,2;3,3
. Góc trên bên trái là gốc (0,0 cho 2D). Trong trường hợp chung, danh sách này sẽ giống như 1,2,...,1,4;4,0,...,6,0;...
trong đó số thứ nhất đại diện cho bên trái, bên phải lên xuống thứ hai, thứ ba đến thứ 3, v.v ... Lưu ý rằng tọa độ đầu tiên là X
lần đầu tiên, lần thứ hai là O
lượt đầu tiên, ....
Đầu vào sẽ được theo sau bởi một dòng mới.
Đầu ra :
Đầu ra sẽ là STDOUT. Đơn giản chỉ cần chỉ ra ai thắng nếu ai đó thắng, hoặc nếu đó là hòa. Nếu đó không phải là hòa cũng không phải là thắng, đừng tạo ra bất cứ thứ gì.
Ngoài ra, cho biết nếu có xung đột di chuyển, nghĩa là, nếu có ít nhất hai lần di chuyển trong cùng một vị trí.
Nếu có một chiến thắng / hòa trước khi đầu vào kết thúc, chương trình của bạn có thể làm bất cứ điều gì nó muốn.
Các trường hợp thử nghiệm (có ai muốn đề xuất thêm nữa không?):
Đầu vào:
4,3
0,0,0;1,1,1;1,0,1;2,0,2;0,0,1;2,0,0;2,0,1;3,0,2;3,0,1
Kết quả ví dụ:
X wins
Một đầu ra có thể khác (yêu cầu giải thích):
1
n
di chuyển trên một dòng để trở thành người chiến thắng. (Xin lỗi vì đã không đăng những nhận xét này trong hộp cát nhưng tôi thậm chí không có thời gian để xem nó ở đó vì nó đã được đăng ngay sau khi hộp cát.)