Python. Помогите, пожалуйста, решить

Рейтинг: -1Ответов: 1Опубликовано: 08.02.2023

Компания по защите интеллектуальной собственности решила повысить уровень защищенности своих операционных систем путем шифрования всех сообщений, передаваемых внутри ее локальных сетей. Любое допустимое в компании сообщение представляет собой строку S = s1s2…sn (1 ≤ n ≤ 255). Шифрование сообщения осуществляется в K фаз (1 ≤ K ≤ 100), K задаётся с клавиатуры. На каждой фазе строка S заменяется строкой, в которой сначала располагаются все буквы строки S (первый блок), стоящие на позициях с номерами, делящимися на 2, 3, или 5, а затем – все остальные буквы (второй блок). Относительный порядок букв в каждом из двух блоков остается неизменным. Например, строка S = ‘abcdefgh’ на первой фазе шифруется в строку S = ‘bcdefhag’. Если осуществляется вторая фаза шифрования, то строка S примет вид S = ‘cdefhgba’ и т. д. Напишите программу, осуществляющую шифрование строки S. Входные данные Натуральное число k – количество фаз шифрования. Строка, которую надо зашифровать. Выходные данные Программа выводит зашифрованную строку. Пример Входные данные 3 Хлеб – всему голова. Выходные данные б –вегл. алсвоеуХ ом

k = int(input())
s = input()

chet = ""
for i in range(2,len(s)):
    if i % 2 == 0 or i % 3 ==0 or i % 5 == 0:
        chet += str(i) + " "

chet = chet.strip().split()
print(chet)
for i in range(k):
    for j in range(len(chet)):
        s = s[:j]+s[int(chet[j])-1]+s[j:]
        s = s[:int(chet[j])]+s[int(chet[j]):]
        print(s)

Ответы

▲ 1

Допустим так можно решить. Тесты проходит.
Просто и наглядно

K = int(input())
letter = input()

def secret(data):
    first = ''
    second = ''
    for i in range(1, len(data) + 1):
        if not i % 2 or not i % 3 or not i % 5:
            first += data[i-1]
        else:
            second += data[i-1]
    return first + second


for j in range(K):
    letter = secret(letter)

print(letter)