Вызов
Учитывая заданную двоичную матрицу и двоичную строку, определите, можно ли найти эту двоичную строку, начиная с любой точки матрицы и двигаясь в любом направлении в любой последующей точке, чтобы сформировать двоичную строку. То есть можно ли найти строку в сложенном виде внутри матрицы?
Струну можно сложить только под углом 90 или 180 градусов (соединения по краям; расстояние до Манхэттена 1), и она не может перекрывать себя в любой точке.
пример
Давайте возьмем следующий пример:
Matrix:
010101
111011
011010
011011
Snake: 0111111100101
Это правдивый контрольный пример. Мы видим змею, сложенную в следующей позиции:
0-1 0 1 0 1
|
1 1 1-0 1 1
| | | |
0 1 1 0-1-0
| |
0 1-1 0 1 1
правила
- Стандартные лазейки применяются
- Вы можете взять длину строки, ширину и высоту матрицы в качестве входных данных, если хотите
- Вы можете взять двоичную матрицу и двоичную строку как многострочную строку / массив строк / строку с новой строкой / строку с чем-либо еще и строку
- Вы можете взять измерения как плоский массив вместо нескольких аргументов
- Ваша программа должна завершиться для любой матрицы 5 x 5 с любой строкой длиной до 10 в течение минуты
Ограничения
- Матрица не обязательно квадратная
- Строка будет непустой
- Строка может быть длиной 1
- Строка не будет содержать больше квадратов, чем доступно (то есть
len(string) <= width(matrix) * height(matrix)
Тестовые случаи
Truthy
01010
10101
01010
10101
01010
0101010101010101010101010
01110
01100
10010
10110
01101
011111000110100
0
0
10
01
1010
100
010
001
100010001
Falsy
00000
00000
00000
00000
00000
1
10101
01010
10101
01010
10101
11
100
010
001
111
10001
01010
00100
01010
10001
1000100010001000101010100