Python checkio Cipher map解决方案

我的解决方案:
def recall_password(cipher_grille, ciphered_password):
    result =''
    rangenumber = len(cipher_grille)
    positionlist = []
    [positionlist.append((i,j)) if cipher_grille[i][j] == 'X' else '' for i in range(rangenumber) for j in range(rangenumber)]
    for j in range(rangenumber):
        c = ([ciphered_password[positionlist[i][0]][positionlist[i][1]] for i in range(rangenumber)])
        result += ''.join(c)
        for k in range(0,rangenumber):
            positionlist[k]=(positionlist[k][1], rangenumber - 1 -positionlist[k][0])
        positionlist.sort()
    return result
其他解决方案:
def recall_password(cipher_grille, ciphered_password):
    answ = ["","","",""]
    for x in range(4):
        for y in range(4):
            if cipher_grille[x][y] == 'X':
                answ[0]+= ciphered_password[x][y]
            if cipher_grille[3-y][x] == 'X':
                answ[1]+= ciphered_password[x][y]
            if cipher_grille[3-x][3-y] == 'X':
                answ[2]+= ciphered_password[x][y]
            if cipher_grille[y][3-x] == 'X':
                answ[3]+= ciphered_password[x][y]
    return answ[0] + answ[1] + answ[2] + answ[3]

def recall_password(cipher_grille, ciphered_password):
    x=cipher_grille
    y=ciphered_password
    answer=[]
    for u in range(4):
        c=0
        for i in x:
            for t in range(4):
                if i[t]=="X":
                    answer.append(y[c][t])
            c+=1         
        x = list(zip(*x[::-1]))
    return "".join(answer)







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AceFreeze

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值