[蓝桥杯] 寻找2020 python解法

【问题描述】
小蓝有一个数字矩阵,里面只包含数字 0 和 2。小蓝很喜欢 2020,他想找到这个数字矩阵中有多少个 2020 。

小蓝只关注三种构成 2020 的方式:
• 同一行里面连续四个字符从左到右构成 2020。
• 同一列里面连续四个字符从上到下构成 2020。
• 在一条从左上到右下的斜线上连续四个字符,从左上到右下构成 2020。

例如,对于下面的矩阵:
220000
000000
002202
000000
000022
002020
一共有 5 个 2020。其中 1 个是在同一行里的,1 个是在同一列里的,3 个是斜线上的。

小蓝的矩阵比上面的矩阵要大,由于太大了,他只好将这个矩阵放在了一个文件里面,在试题目录下有一个文件 2020.txt,里面给出了小蓝的矩阵。

请帮助小蓝确定在他的矩阵中有多少个 2020。

文件链接:https://wws.lanzous.com/iXSJFlcswtc

解法:先取出来再判断就行了

结果:16520

with open('2020.txt', 'r') as f:
    s = f.read()

lis = s.split('\n')
lis2 = lis[::]

# 竖着
lis2 += [''.join([j[i] for j in lis]) for i in range(len(lis[0]))]
# 左上到右下
lis = [i[::-1] for i in lis]
lis2 += [''.join([lis[j][i - j] for j in range(i + 1) if j < len(lis) and i - j < len(lis[0])]) for i in range(len(lis[0]) + len(lis) - 1)]

ans = 0
for i in lis2:
    for left in range(len(i) - 3):
        if i[left:left + 4] == '2020':
            ans += 1
print(ans)


已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页