バックグラウンド
この課題のために、n-stateセルオートマトンはf、状態セットから2つの数値{0, 1, ..., n-1}を入力として受け取り、そのセットから別の数値を出力として返す単純なバイナリ関数です。これは、少なくとも2の長さの数値のリストに適用できます。L = [x0, x1, x2, ..., xk-1]
f(L) = [f(x0, x1), f(x1, x2), f(x2, x3), ..., f(xk-2, xk-1)]
結果のリストの要素は元のリストより1つ少ないことに注意してください。時空図のfから始まるは、L繰り返し適用して得られたリストのリストであるfとL、リスト内の結果を収集します。最終的なリストの長さは1です。状態セットのすべての2要素リストが、時空間図のいくつかの行の連続したサブリストである場合、リストLはの識別シーケンスであると言います。これは、他の状態のCAがその正確な時空図を持たないという条件と同等です。fLn
入力
入力は、nx行n整数の行列M、L長さが2以上の整数のリスト、およびオプションで数値nです。マトリックスがM定義n-state CA fによってf(a,b) = M[a][b](0ベースのインデックスを使用して)。これは、ことが保証されn > 0、そのMとLのみ状態集合の要素を含みます{0, 1, ..., n-1}。
出力
LCAの識別シーケンスである場合、出力は一貫した真の値fであり、それ以外の場合は一貫した偽の値になります。これは、すべての「はい」インスタンスは同じ真理値をもたらし、すべての「いいえ」インスタンスは同じ偽値をもたらすことを意味します。
例
入力を考えてみましょうn = 2、M = [[0,1],[1,0]]とL = [1,0,1,1]。マトリックスは、MバイナリXORオートマトンを定義f(a,b) = a+b mod 2し、時空図最低LIS
1 0 1 1
1 1 0
0 1
1
この図には0 0行が含まれていないためL、識別シーケンスではなく、正しい出力はFalseです。L = [0,1,0,0]代わりに入力すると、時空図は
0 1 0 0
1 1 0
0 1
1
この図の行は、状態セットから引き出されたすべてのペアを含む、すなわち0 0、0 1、1 0および1 1、そうL識別シーケンスであり、正しい出力されますTrue。
ルール
完全なプログラムまたは関数を作成できます。最も低いバイト数が優先され、標準の抜け穴は許可されません。
テストケース
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