Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 14, 2021 02:44:29

eiktyrnir
Зарегистрирован: 2021-04-14
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Шифровка

Шифровка
Стало известно, что противник шифрует текст следующим образом. Сначала определяется количество букв в самом длинном слове, его длину обозначим k (словом называется непрерывная последовательность английских букв, слова друг от друга отделяются любыми другими символами, длина слова не превышает 20 символов). Затем каждая английская буква заменяется на букву, стоящую в алфавите на k букв позже (алфавит считается циклическим, то есть после буквы Z стоит буква A). Другие символы остаются неизменными. Строчные буквы при этом остаются строчными, а заглавные — заглавными. Расшифруйте найденную шифровку.

Входные данные

На вход программе подается текст шифровки, состоящей не более чем из 250 символов.

Выходные данные

Выведите исходный текст.

Примеры
Ввод
a a a a a a a a a a a a a a a a a a a a a aa a a a a a a a a a a a a amama a a a aa a a a a a a a a a a a a a a a a a a aa a a a aa a a a a aa aa a aa a a a a a a a a a aa a a a a a a a a a a a a a a a aa a a a a a a a a a a a a a a a a a a a a a a a .
Вывод
f f f f f f f f f f f f f f f f f f f f f ff f f f f f f f f f f f f frfrf f f f ff f f f f f f f f f f f f f f f f f f ff f f f ff f f f f ff ff f ff f f f f f f f f f ff f f f f f f f f f f f f f f f ff f f f f f f f f f f f f f f f f f f f f f f f .
Ввод
Zb Ra Ca Dab Ra.
Вывод
Ce Ud Fd Gde Ud.

Моя попытка решить

 import re
def shift(k):
    def closure(c):
        if c.isupper():
            return chr((ord(c) - ord("A") + k) % 26 + ord("A"))
        elif c.islower():
            return chr((ord(c) - ord("a") + k) % 26 + ord("a"))
        else:
            return c
    return closure
def decode(s, k):
    return "".join(map(shift(k), s))
def main():
    s = input()
    words = re.split(r"\W", s)
    k = max(map(len, words))
    print(decode(s, k))
if __name__ == "__main__":
    main()

Компилятор пропускает, но проверщик говорит что "Программа выдаёт неверный ответ"

Очень прошу вас помочь…

Офлайн

#2 Апрель 14, 2021 21:46:52

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9897
Репутация: +  855  -
Профиль   Отправить e-mail  

Шифровка

  
>>> def get_shift_size(text):
...     maxwordlen = wordlen = 0
...     for ch in text:
...         if ch.isalpha():
...             wordlen += 1
...         else:
...             if wordlen > maxwordlen:
...                 maxwordlen = wordlen
...             wordlen = 0
...     if wordlen > maxwordlen:
...         maxwordlen = wordlen
...     out = maxwordlen
...     return out
... 
>>> def translate(text, shift_size):
...     chars = []
...     for ch in text:
...         if ch.isalpha():
...             newch = translate_char(ch, shift_size)
...         else:
...             newch = ch
...         chars.append(newch)
...     out = ''.join(chars)
...     return out
... 
>>> def translate_char(ch, shift_size):
...     out = None
...     alpha_upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
...     alpha_lower = 'abcdefghijklmnopqrstuvwxyz'
...     if ch.isupper():
...         out = alpha_upper[(alpha_upper.index(ch) + shift_size) % 26]
...     elif ch.islower():
...         out = alpha_lower[(alpha_lower.index(ch) + shift_size) % 26]
...     return out
... 
>>> def process_all():
...     text = input()
...     shift_size = get_shift_size(text)
...     out = translate(text, shift_size)
...     print(out)
... 
>>> process_all()
a a a a a a a a a a a a a a a a a a a a a aa a a a a a a a a a a a a amama a a a aa a a a a a a a a a a a a a a a a a a aa a a a aa a a a a aa aa a aa a a a a a a a a a aa a a a a a a a a a a a a a a a aa a a a a a a a a a a a a a a a a a a a a a a a .
f f f f f f f f f f f f f f f f f f f f f ff f f f f f f f f f f f f frfrf f f f ff f f f f f f f f f f f f f f f f f f ff f f f ff f f f f ff ff f ff f f f f f f f f f ff f f f f f f f f f f f f f f f ff f f f f f f f f f f f f f f f f f f f f f f f .
>>> process_all()
Zb Ra Ca Dab Ra.
Ce Ud Fd Gde Ud.
>>>



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version