Фон
Для целей этой задачи n
сотовый автомат -состояния - это просто двоичная функция, f
которая принимает два числа из состояния, заданного в {0, 1, ..., n-1}
качестве входных данных, и возвращает другое число из этого набора в качестве выходных. Это может быть применено к списку чисел длиной не менее 2L = [x0, x1, x2, ..., xk-1]
f(L) = [f(x0, x1), f(x1, x2), f(x2, x3), ..., f(xk-2, xk-1)]
Обратите внимание, что результирующий список имеет на один элемент меньше оригинала. Пространственно - временная схема , из f
начиная с L
списком списков , полученных путем многократного применения f
к L
, и собирая результаты в виде списка. Окончательный список имеет длину 1. Мы будем говорить , что список L
является выявление последовательности для f
, если каждый список из двух элементов над множеством состояний представляет собой непрерывный подсписок некоторого ряда пространственно - временной диаграмме , начиная с L
. Это эквивалентно условию, что ни у одного другого n
ЦС нет такой точной пространственно-временной диаграммы.
вход
Входы являются n
матрицей с размерностью n
целочисленной матрицей M
, списком целых чисел L
длиной , по меньшей мере 2, и , возможно , количество n
. Матрица M
определяет n
CA-состояние f
посредством f(a,b) = M[a][b]
(используя индексацию на основе 0). Гарантируется, что n > 0
и то M
и L
только содержат элементы множества состояний {0, 1, ..., n-1}
.
Вывод
Ваш вывод должен быть непротиворечивым истинным значением, если L
является идентифицирующей последовательностью для CA f
, и непротиворечивым ложным значением в противном случае. Это означает, что все экземпляры «да» приводят к одному и тому же истинному значению, а все экземпляры «нет» приводят к одному и тому же ложному значению.
пример
Рассмотрим входы n = 2
, M = [[0,1],[1,0]]
и L = [1,0,1,1]
. Матрица M
определяет двоичный XOR автомат f(a,b) = a+b mod 2
, и пространственно - временная схема , начиная с L
IS
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