Arka fon
Bu zorluğun amaçları doğrultusunda, bir n
-stat hücresel otomat , girdi olarak f
ayarlanan durumdan iki sayı alan ve {0, 1, ..., n-1}
bu setten çıktı olarak başka bir sayı döndüren ikili bir fonksiyondur . En az 2 adet uzunluğa sahip bir sayı listesine uygulanabilir.L = [x0, x1, x2, ..., xk-1]
f(L) = [f(x0, x1), f(x1, x2), f(x2, x3), ..., f(xk-2, xk-1)]
Ortaya çıkan listenin orijinalinden bir tane daha az öğeye sahip olduğunu unutmayın. Bir uzay-zaman diyagramı arasında f
başlayarak L
sürekli olarak uygulanmasıyla elde edilen listelerin liste f
için L
, ve bir liste sonuçları toplamak. Nihai liste Bu liste söylemek uzunluğu 1 olan L
bir bir tanımlama dizisi için f
durum kümesi üzerinden her iki eleman listesi başlayarak uzay-zaman diyagramı bir sıranın, bitişik bir alt liste ise L
. Bu, başka hiçbir n
devlet CA'sının tam olarak kesin uzay-zaman diyagramına sahip olmaması koşuluyla eşdeğerdir .
Giriş
Girişleriniz bir n
-by- n
tamsayı matrisi M
, L
en az 2 uzunluklu tamsayıların listesi ve isteğe bağlı olarak sayıdır n
. Matris M
bir tanımlayan n
-durum CA f
tarafından f(a,b) = M[a][b]
(0 tabanlı dizin kullanılarak) dönüştürülmüştür. O garantilidir n > 0
ve bu M
ve L
tek devlet kümesinin unsurları içeren {0, 1, ..., n-1}
.
Çıktı
Eğer çıkış tutarlı truthy değer olacaktır L
CA için tanımlayıcı bir dizisidir f
ve başka türlü tutarlı falsy değer. Bu, tüm "evet" durumlarının aynı doğruluk değerine ve tüm "hayır" durumlarının aynı yanlış değere yol açtığı anlamına gelir.
Misal
Girişlerini düşünün n = 2
, M = [[0,1],[1,0]]
ve L = [1,0,1,1]
. Matris M
ikili XOR otomat tanımlar f(a,b) = a+b mod 2
ve uzay-zaman diyagramı başlayarak L
IS
1 0 1 1
1 1 0
0 1
1
Bu diyagram 0 0
herhangi bir satırda yer almaz , bu nedenle L
tanımlayıcı bir sıra değildir ve doğru çıktıdır False
. Biz girişi ise L = [0,1,0,0]
bunun yerine, uzay-zaman diyagramıdır
0 1 0 0
1 1 0
0 1
1
Bu diyagram sıraları durum grubu çekilen tüm çiftleri içerir, yani 0 0
, 0 1
, 1 0
ve 1 1
bu yüzden L
, bir tanımlama dizidir ve doğru çıktı True
.
kurallar
Tam bir program veya işlev yazabilirsiniz. En düşük bayt sayısı kazanır ve standart boşluklara izin verilmez.
Test Durumları
Trivial automaton
[[0]] [0,0] 1 -> True
Binary XOR
[[0,1],[1,0]] [1,0,1,1] 2 -> False
[[0,1],[1,0]] [1,0,1,0] 2 -> True
[[0,1],[1,0]] [0,1,0,0] 2 -> True
Addition mod 3
[[0,1,2],[1,2,0],[2,0,1]] [0,1,1,0,0,0,1,0,0] 3 -> False
[[0,1,2],[1,2,0],[2,0,1]] [0,1,1,0,0,0,1,0,1] 3 -> True
Multiplication mod 3
[[0,0,0],[0,1,2],[0,2,1]] [0,1,1,2,0,0,1,0,1] 3 -> False
[[0,0,0],[0,1,2],[0,2,1]] [0,1,1,2,2,2,1,0,1] 3 -> True
Some 4-state automata
[[3,2,2,1],[0,0,0,1],[2,1,3,1],[0,1,2,3]] [0,0,0,0,1,1,1,1] 4 -> False
[[3,2,2,1],[0,0,0,1],[2,1,3,1],[0,1,2,3]] [0,0,0,1,0,1,1,1] 4 -> False
[[3,2,2,1],[0,0,0,1],[2,1,3,1],[0,1,2,3]] [0,1,2,3,3,1,2,3,0] 4 -> True
[[0,1,2,1],[1,0,2,0],[2,2,1,0],[1,2,0,0]] [0,0,1,1,2,2,0,2,1] 4 -> False
[[0,1,2,1],[1,0,2,0],[2,2,1,0],[1,2,0,0]] [0,3,1,3,2,3,3,0,1] 4 -> False
[[0,1,2,1],[1,0,2,0],[2,2,1,0],[1,2,0,0]] [0,3,1,3,2,3,3,0,1,2] 4 -> True