Bir n kazandı kim kontrol için en kısa program oluşturun d tic tac toe oyunu.
Programınız n
(genişlik) ve d
(boyut numarası) şu aralıklarda olduğunda çalışmalıdır:
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 yani 3 x 3):
[][][]
[][][]
[][][]
n = 3; d = 3
(3 3 yani 3 x 3 x 3):
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
n = 6; d = 2
(6 2 yani 6 x 6):
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
Ve bunun gibi.
Kazanan (Yeterince çok boyutlu tic tac toe oynadıysanız, bu aynıdır.)
Kazanmak için, bir oyuncunun bir çizgi boyunca tüm bitişik karelere sahip olması gerekir. Yani, bir oyuncunun n
kazanan olabilmesi için bir hatta hamle yapması gerekir .
bitişik:
- her karo bir noktadır; örneğin (0,0,0,0,0),
d=5
- bitişik karolar aynı birim d-küpünde her iki nokta olacak şekilde karolardır. Başka bir deyişle, fayanslar arasındaki Chebyshev mesafesi 1'dir.
- diğer bir deyişle, bir nokta bir noktaya
p
bitişikse, s'deki ilgili koordinattakiq
her koordinat, birden fazla farklı değildir. Ek olarak, en azından koordinat çifti tam olarak bir farklılık gösterir.p
q
Hatları:
- Çizgiler vektörler ve bir döşemeyle tanımlanır. Bir çizgi, denklemin vurduğu her bir döşemedir:
p0 + t
<
some vector with the same number of coordinates as p0>
Giriş :
Giriş STDIN olacaktır. Girişin ilk çizgisi, iki sayılar, olacak n
ve d
formu n,d
.
Bundan sonra, yapılan hareketleri belirten koordinatlardan oluşan bir çizgi olacaktır. Koordinatlar şeklinde listelenir: 1,1;2,2;3,3
. Sol üst köşe başlangıç noktasıdır (2D için 0,0). Genel durumda, bu liste 1,2,...,1,4;4,0,...,6,0;...
ilk sayının sola-sağa, ikinci yukarı-aşağıya, üçüncü ila üçüncü boyuta vb. Gösterdiği gibi olacaktır. İlk koordinatın X
ilk dönüş, ikinci olduğu O
ilk dönüş, ....
Girdiyi bir satırsonu izleyecektir.
Çıktı :
Çıktı STDOUT olacak. Birisinin kazandığını veya bir kravat olup olmadığını kimin kazandığını belirtmeniz yeterlidir. Eğer bir beraberlik ya da galibiyet yoksa, hiçbir şey çıkarmayın.
Ek olarak, bir hareket çakışması olup olmadığını, yani aynı konumda en az iki hareket olup olmadığını belirtin.
Giriş bitmeden bir galibiyet / beraberlik olsaydı, programınız ne isterse yapabilir.
Test senaryoları (daha fazla önermek isteyen var mı?):
Giriş:
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
Örnek Çıktı:
X wins
Başka bir olası çıktı (açıklama gerektirir):
1
n
, kazanan olmak için bir çizgi üzerinde hamle yapıldığını tanımlamanız gerekir . (Bu açıklamaları kum havuzuna göndermediğim için özür dilerim, ancak kum havuzundan hemen sonra yayınlandığı için orada bile görmek için zamanım bile yoktu.)