有两个显示地图的数组(大约100x100)和一个小模板(此地图的一部分小于20x20)。有必要找到模板的所有可能的入口(每个可能的匹配都有一些布尔函数)。 例如,一些小地图可以显示为:
#.#.#
.....
#####
现在,我将其存储在字符串列表中。嵌套循环工作缓慢。 使用此类阵列的最快方法是什么?是否有可能制作成对的发电机并使用它?还是应该使用内置的字符串函数以获得更快的结果?
def read():
n, m = map(int, input().split())
l = []
for _ in range(n):
l.append(input())
return n, m, l
n_m, m_m, base = read()
n_d, m_d, dust = read()
def check(i, j):
if i == '#' and j != '#':
return False
return True
def solve(y, x):
ans = True
for i in range(n_m):
for j in range(m_m):
ans &= check(base[i][j], dust[i + y][j + x])
return ans
cnt = 0
for i in range(n_d - n_m + 1):
for j in range(m_d - m_m + 1):
cnt += 1 if solve(i, j) else 0
print(cnt)