@ded21veka

Что делать если не читает кириллицу в задаче?

Есть олимпиадная задача: Петя и Вася обмениваются шифрованными сообщениями.
Они используют такой алгоритм шифрования.
Берут секретное число k, известное на всём свете только им двоим
И в каждом слове сообщения k раз первую букву переставляют в конец слова.

Например, если k=3, то слово «ШКОЛА» превратится сначала в «КОЛАШ», затем в «ОЛАШК» и, наконец, в «ЛАШКО».
После этого полученное слово записывают в обратном порядке: «ОКШАЛ».

Такое шифрование – довольно тяжёлый труд, помогите Пете и Васе его автоматизировать.

Я ее решил и в python'e работает все нормально,но на сайте где проверяет,ставит 0 баллов вот код решения:
a=int(input())
b=str(input()).upper()
n=0
spis=[]
for i in b:
spis.append(i)
while n<a:
  n=n+1
  spis.append(spis.pop(0))
print(*spis[::-1], sep='')
  • Вопрос задан
  • 180 просмотров
Решения вопроса 1
adugin
@adugin Куратор тега Python
Именно для такой задачи в Python есть класс deque:
from collections import deque

def encrypt(word, k):
    code = deque(word)
    code.rotate(-k)
    code.reverse()
    return ''.join(code)

assert encrypt('ШКОЛА', 3) == 'ОКШАЛ'
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AnnTHony
@AnnTHony
Интроверт
попробуй так

k = 3
s = 'ШКОЛА'

print(''.join(s[k:] + s[:k])[::-1])  # ОКШАЛ

# возможно стоит еще добавить такое, если k будет больше чем длина строки
print(''.join(s[k % len(s):] + s[:k % len(s)])[::-1])  # ОКШАЛ


Если в тексте задачи есть переменная k, зачем в коде ее заменять на a?
b=str(input()).upper() - зачем переводить в верхний регистр?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы