Buscando 2020

Directorio de artículos

problema

Xiaolan tiene una matriz numérica que solo contiene los números 0 y 2. A Xiaolan le gusta mucho 2020. Quiere saber cuántos años 2020 hay en esta matriz digital.

Xiaolan solo presta atención a tres formas de formar 2020:
• Cuatro caracteres consecutivos en la misma línea forman 2020 de izquierda a derecha.
• Cuatro caracteres consecutivos en la misma columna forman 2020 de arriba a abajo.
• Cuatro caracteres consecutivos en una línea diagonal desde la parte superior izquierda a la inferior derecha forman 2020 desde la parte superior izquierda a la inferior derecha.

Por ejemplo, para la siguiente matriz:
220000
000000
002202
000000
000022
002020,
hay 5 2020 en total. Uno de ellos está en la misma fila, uno está en la misma columna y tres están en la línea diagonal.
La matriz de Xiaolan es más grande que la matriz anterior. Debido a que es demasiado grande, tuvo que poner esta matriz en un archivo. Hay un archivo 2020.txt en el directorio de prueba, que da la matriz de Xiaolan.
Ayude a Xiaolan a determinar cuántos 2020 hay en su matriz.

Código de idea

Traducción literal

a = []
with open(r'C:\Users\76390\Desktop\2020.txt', 'r') as fp:
    for line in fp.readlines():
        a.append(line.strip())
m = len(a)
n = len(a[0])
num = 0
# 横向寻找
for i in range(m):
    for j in range(n-3):
        if a[i][j] == '2' and a[i][j+1] == '0' and a[i][j+2] == '2' and a[i][j+3] == '0':
            num += 1
# 纵向寻找
for b in range(m-3):
    for c in range(n):
        if a[b][c] == '2' and a[b+1][c] == '0' and a[b+2][c] == '2' and a[b+3][c] == '0':
            num += 1
# 斜寻找
for l in range(m-3):
    for k in range(n-3):
        if a[l][k] == '2' and a[l+1][k+1] == '0' and a[l+2][k+2] == '2' and a[l+3][k+3] == '0':
            num += 1

print(num)

Supongo que te gusta

Origin blog.csdn.net/qq_49821869/article/details/115084228
Recomendado
Clasificación