Find Sequence
You are given a matrix of NxN (4≤N≤10). You should check if there is a sequence of 4 or more matching digits. The sequence may be positioned horizontally, vertically or diagonally (NW-SE or NE-SW diagonals).
Input: A list of lists. Each list contains integers.
Output: A boolean. Whether or not a sequence exists.
Example:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
checkio([
[
1
,
2
,
1
,
1
],
[
1
,
1
,
4
,
1
],
[
1
,
3
,
1
,
6
],
[
1
,
7
,
2
,
5
]
])
=
=
True
checkio([
[
7
,
1
,
4
,
1
],
[
1
,
2
,
5
,
2
],
[
3
,
4
,
1
,
3
],
[
1
,
1
,
8
,
1
]
])
=
=
False
checkio([
[
2
,
1
,
1
,
6
,
1
],
[
1
,
3
,
2
,
1
,
1
],
[
4
,
1
,
1
,
3
,
1
],
[
5
,
5
,
5
,
5
,
5
],
[
1
,
1
,
3
,
1
,
1
]
])
=
=
True
checkio([
[
7
,
1
,
1
,
8
,
1
,
1
],
[
1
,
1
,
7
,
3
,
1
,
5
],
[
2
,
3
,
1
,
2
,
5
,
1
],
[
1
,
1
,
1
,
5
,
1
,
4
],
[
4
,
6
,
5
,
1
,
3
,
1
],
[
1
,
1
,
9
,
1
,
2
,
1
]
])
=
=
True
|
def checkio(matrix):
if len(matrix)<4:
return False
for i in range(len(matrix)-3):
for j in range(len(matrix)-3):
if (matrix[i][j] == matrix[i][j+1] and matrix[i][j] == matrix[i][j+2] and matrix[i][j] == matrix[i][j+3]) or (matrix[i][j] == matrix[i+1][j] and matrix[i][j] == matrix[i+2][j] and matrix[i][j] == matrix[i+3][j]) or (matrix[i][j] == matrix[i+1][j+1] and matrix[i][j] == matrix[i+2][j+2] and matrix[i][j] == matrix[i+3][j+3]):
return True
for i in range(3,len(matrix)):
for j in range(len(matrix)-3):
if (matrix[i][j] == matrix[i][j+1] and matrix[i][j] == matrix[i][j+2] and matrix[i][j] == matrix[i][j+3]) or (matrix[i][j] == matrix[i-1][j-1] and matrix[i][j] == matrix[i-2][j-2] and matrix[i][j] == matrix[i-3][j-3]):
return True
for i in range(len(matrix)-3):
for j in range(3,len(matrix)):
if (matrix[i][j] == matrix[i+1][j] and matrix[i][j] == matrix[i+2][j] and matrix[i][j] == matrix[i+3][j]) or (matrix[i][j] == matrix[i+1][j-1] and matrix[i][j] == matrix[i+2][j-2] and matrix[i][j] == matrix[i+3][j-3]):
return True
return False