-
Notifications
You must be signed in to change notification settings - Fork 24
/
Copy paththe-grid-search.py
58 lines (47 loc) · 1.44 KB
/
the-grid-search.py
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# The Grid Search
# Given a 2D array of digits, try to find a given 2D grid pattern of digits within it.
#
# https://www.hackerrank.com/challenges/the-grid-search/problem
#
def gridSearch(G, P):
# on cherche dans toute les lignes de G
i = 0
while i <= len(G) - len(P):
p0 = 0
while True:
j = 0
i0 = i
# cherche si P[0] se trouve dans la ligne courante de G
p = G[i0].find(P[j], p0)
if p == -1:
break
# cherche le reste de P, à la même position
# (OK pas optimisé, mais plus clair à écrire!)
while j < len(P) and i0 < len(G) and p == G[i0].find(P[j], p0):
i0 += 1
j += 1
if j == len(P):
return "YES"
# le motif P[0] peut se retrouver plus loin dans la ligne...
p0 = p + 1
i += 1
return "NO"
if __name__ == "__main__":
t = int(input().strip())
for a0 in range(t):
R, C = input().strip().split(' ')
R, C = [int(R), int(C)]
G = []
G_i = 0
for G_i in range(R):
G_t = str(input().strip())
G.append(G_t)
r, c = input().strip().split(' ')
r, c = [int(r), int(c)]
P = []
P_i = 0
for P_i in range(r):
P_t = str(input().strip())
P.append(P_t)
result = gridSearch(G, P)
print(result)