匹配二维字符数组的最快方法

时间:2020-05-22 17:04:47

标签: python-3.x string multidimensional-array generator

有两个显示地图的数组(大约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)

0 个答案:

没有答案