Мой кодКак сделать мой код для шифрования python более эффективным?
from itertools import permutations
original = str(input('What word would you like to unscramble?: '))
gen = []
for bob in permutations(original):
gen.append(''.join(bob))
inputFile = open('dic.txt', 'r')
compare = inputFile.read().split('\n')
inputFile.close()
rondo = set(john for john in gen if john in compare)
for magic in rondo:
print(magic)
Я использую его расшифровывать слова, находя все возможные перестановки слова и сравнения каждой перестановки в словарь, чтобы найти реальные слова, а затем возвращаются те реальные слова. Тем не менее, переборка из восьми букв вызывает ошибку, когда я заканчиваю барабан до завершения программы, и слова с семью или восемью буквами занимают много времени, чтобы отменить разборку. Я хотел бы знать, есть ли способ заставить мой код работать быстрее с более длинными словами, а также способ увеличить максимальную длину слова. Я использую Python 3 и немного начинаю, если это имеет значение.
Спасибо! Я понимаю, о чем вы говорите, но не могли бы вы дать мне демонстрацию, поскольку я не совсем уверен, как это сделать. – TimeWillTell
Вы можете сделать подпись, отсортировав буквы следующим образом. Сканируйте текущий файл словаря, который имеет по одному слову в строке и создайте новый файл с двумя словами в каждой строке: оригинальное слово с буквами, отсортированными в алфавитном порядке, а затем оригинальное слово. Затем, чтобы развернуть слово, вы просто сортируете его и ищите отсортированную версию в новом файле. Возможно, вы сможете хранить новый список двойных слов в памяти как «dict» Python с отсортированным словом в качестве ключа и исходной версии в качестве значения. Если нет, вы можете быстро выполнить поиск по отсортированному файлу с использованием бисекции. –
Это хорошо, но я бы по-прежнему рекомендовал, чтобы задающий вопрос понял и использовал генераторы в коде, согласно моему ответу. –