Antecedentes
Para los propósitos de este desafío, un n
autómata celular de estado es simplemente una función binaria f
que toma dos números del estado establecido {0, 1, ..., n-1}
como entradas y devuelve otro número de ese conjunto como salida. Se puede aplicar a una lista de números de longitud de al menos 2 porL = [x0, x1, x2, ..., xk-1]
f(L) = [f(x0, x1), f(x1, x2), f(x2, x3), ..., f(xk-2, xk-1)]
Tenga en cuenta que la lista resultante tiene un elemento menos que el original. Un diagrama espacio-tiempo de f
partir de L
la lista de listas obtenidos aplicando repetidamente f
a L
, y la recogida de los resultados en una lista. La lista final tiene longitud 1. Decimos que la lista L
es una secuencia de identificación para f
, si cada lista de dos elementos sobre el conjunto de estados es una sublista contigua de alguna fila del diagrama de espacio-tiempo a partir de L
. Esto es equivalente a la condición de que ninguna otra n
CA estatal tenga ese diagrama de espacio-tiempo exacto.
Entrada
Sus entradas son un n
-by- n
matriz de número entero M
, una lista de números enteros L
de longitud al menos 2, y, opcionalmente, el número n
. La matriz M
define una n
CA de estado f
mediante f(a,b) = M[a][b]
(usando indexación basada en 0). Se garantiza eso n > 0
, y eso M
y L
solo contiene elementos del conjunto de estados {0, 1, ..., n-1}
.
Salida
Su salida será un valor de verdad consistente si L
es una secuencia de identificación para la CA f
, y un valor de falsedad consistente de lo contrario. Esto significa que todas las instancias "sí" dan como resultado el mismo valor verdadero y todas las instancias "no" dan como resultado el mismo valor falso.
Ejemplo
Considere las entradas n = 2
, M = [[0,1],[1,0]]
y L = [1,0,1,1]
. La matriz M
define el autómata XOR binario f(a,b) = a+b mod 2
, y el diagrama de espacio-tiempo a partir de L
es
1 0 1 1
1 1 0
0 1
1
Este diagrama no contiene 0 0
ninguna fila, por L
lo que no es una secuencia de identificación, y la salida correcta es False
. Si ingresamos en su L = [0,1,0,0]
lugar, el diagrama espacio-tiempo es
0 1 0 0
1 1 0
0 1
1
Las filas de este diagrama contienen todos los pares extraídos del conjunto de estado, a saber 0 0
, 0 1
, 1 0
y 1 1
, por lo L
es una secuencia de identificación y la salida correcta es True
.
Reglas
Puede escribir un programa completo o una función. El conteo de bytes más bajo gana, y las lagunas estándar no se permiten.
Casos de prueba
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