Фон
Для целей этой задачи 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определяет nCA-состояние 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, и пространственно - временная схема , начиная с 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