Каттис: ключ к криптографии - PullRequest
0 голосов
/ 25 августа 2018

Так что я возился с проблемами открытых каттис, они, как правило, довольно простые и забавные маленькие проблемы, которые можно решить.Я начал с самых простых проблем и работал над этим.В настоящее время я работаю над проблемой под названием «Ключ к криптографии» (https://open.kattis.com/problems/keytocrypto). У меня есть решение этой проблемы в python3, однако в 6-м тесте я получаю ошибку во время выполнения и пытаюсь выяснить,какая часть моего кода выдает ошибку. К сожалению, они предоставляют только очень ограниченную обратную связь и контрольные примеры. Вот мое решение:

cypher = [ch for ch in input().strip()]
secret = [ch for ch in input().strip()]
og_secret = secret
if len(secret) > len(cypher):
    for i in range(len(secret) - len(cypher)): secret.pop()
    og_secret = secret
shifts = {'A':0, 'B':1, 'C':2, 'D':3, 'E':4, 'F':5, 'G':6,
          'H':7, 'I':8, 'J':9, 'K':10, 'L':11, 'M':12, 'N':13,
          'O':14, 'P':15, 'Q':16, 'R':17, 'S':18, 'T':19,'U':20,
          'V':21, 'W':22, 'X':23, 'Y':24, 'Z':25}
shiftnums, cyphernums, ans = [], [], []
cyphernums = [shifts.get(ch) for ch in cypher]
while len(ans) < len(cypher):
    secret = og_secret + ans
    shiftnums, ans = [], []
    shiftnums = [shifts.get(ch) for ch in secret]
    for i in range(len(secret)):
        shift = cyphernums[i] - shiftnums[i]
        if shift < 0: shift = 26 + shift
        ans.append(list(shifts.keys())[list(shifts.values()).index(shift)])
print (''.join(ans))

Предоставленный контрольный пример:

SGZVQBUQAFRWSLC
ACM

, который должен (и должен) дать ответ:

SENDMOREMONKEYS

Любая помощь очень ценится и заранее спасибо.

...