CCF Python题解(100分)201604-2 俄罗斯方块


data = []
new = []
for i in range(15):
    data.append(list(map(int, input().split())))

for i in range(4):
    new.append(list(map(int, input().split())))

dcol = int(input())


def getpoint(lindex, sindex):
    for lrow in range(lindex, 15):  # 大行
        for srow in range(sindex, -1, -1):  # 小行
            for lcol in range(dcol - 1, dcol + 3):  # 大列

                if (new[srow][lcol - dcol + 1] and data[lrow][lcol]) or lrow == 14:
                    return lrow, srow


for i in range(3, -1, -1):
    if new[i] != [0] * 4:
        sindex = i
        break
for k in range(14, -1, -1):
    if data[k] != [0] * 10:
        lindex = k
lrow = getpoint(lindex, sindex)[0]
srow = getpoint(lindex, sindex)[1]
if lrow == 14:
    lrow = 15
    maxrow = srow + 1
else:
    maxrow = 4
for row in range(maxrow):
    for col in range(4):
        data[row + lrow - srow - 1][col + dcol - 1] += new[row][col]

for i in range(15):
    for j in range(10):
        print(data[i][j], end=" ")
    print()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值