Напишите программу для расшифровки секретного слова методом частотного анализа

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

PYTHON

Напишите программу для расшифровки секретного слова методом частотного анализа.

Формат входных данных В первой строке задано зашифрованное слово. Во второй строке задано одно целое число nn – количество букв в словаре. В следующих nn строках записано, сколько раз конкретная буква алфавита встречается в этом слове – <буква>: <частота>.

Формат выходных данных Программа должна вывести дешифрованное слово.

Примечание. Гарантируется, что частоты букв не повторяются.

text = input()
list1 = {}
dicts = {a: text.count(a) for a in set(text)}

for i in range(int(input())):
    symbol = input().split(':')
    list1.setdefault(symbol[0],int(symbol[1]))

new_dicts = {v: k for k,v in list1.items()}

for v in dicts.values():
    for k1,v1 in new_dicts.items():
        if v == k1:
            print(new_dicts[k1],end='')

мой вывод:

ед

каждый раз разный не могу понять почему

подскажите пожалуйста что не так?

должно быть вот так:

Sample Input 1:

pop

2

д: 2

е: 1

Sample Output 2:

дед

прошу помочь

Ответы

▲ 1Принят

вы перемудрили. можно сразу составлять словарь соответствия частоты букве в коде, раз частоты не повторяются. просто делаем их ключом словаря dicts, а потом по ним выбираем букву

тогда в list1 можно сделать словарь расшифровки, и им воспользоваться в последнем цикле

text = input()
list1 = {}
dicts = {text.count(a):a for a in set(text)}

for i in range(int(input())):
    symbol = input().split(':')
    list1[dicts[int(symbol[1])]] = symbol[0]

for v in text:
    print(list1[v], end='')