Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2021, 02:54   #1
eikturnir
Новичок
Джуниор
 
Регистрация: 14.04.2021
Сообщений: 4
По умолчанию Шифровка

Шифровка
Стало известно, что противник шифрует текст следующим образом. Сначала определяется количество букв в самом длинном слове, его длину обозначим 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()
Компилятор пропускает, но проверщик говорит что "Программа выдаёт неверный ответ"

Очень прошу вас помочь…
eikturnir вне форума Ответить с цитированием
Старый 14.04.2021, 19:34   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Мне кажется, они перепутали примеры, так как описывают процесс шифровки, а при дешифровке нужно идти по алфавиту назад. Но сначала поправьте определение длины самого длинного слова, так как \W это [^A-Za-z0-9_], то есть словом считаются и цифры, и подчеркивания.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
шифровка Denis_"programist" Общие вопросы Delphi 0 06.05.2017 21:49
Шифровка Аруми Помощь студентам 4 23.12.2011 20:25
Шифровка .Phoenix Безопасность, Шифрование 1 07.02.2011 06:54
Шифровка venomdanger Помощь студентам 1 23.12.2010 15:40
Шифровка Witaliy Общие вопросы Delphi 2 01.05.2008 21:18