Skip to content

Commit cd404a6

Browse files
Merge pull request #2755 from avinashkranjan/deepsource-transform-523e121c
format code with autopep8
2 parents c026832 + 5a0f954 commit cd404a6

File tree

1 file changed

+19
-5
lines changed

1 file changed

+19
-5
lines changed

Cryptogram Solver/cryptogram_solver.py

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
import pickle
44
import os
55

6+
67
def load_word_dictionary(file_path):
78
with open(file_path, 'r') as file:
89
return set(word.strip().lower() for word in file.readlines())
910

11+
1012
def get_letter_frequencies(text):
1113
frequencies = {}
1214
for char in text:
@@ -15,27 +17,33 @@ def get_letter_frequencies(text):
1517
frequencies[char_lower] = frequencies.get(char_lower, 0) + 1
1618
return frequencies
1719

20+
1821
def decrypt_cryptogram(cryptogram, frequency_map, word_dict):
1922
alphabet = string.ascii_lowercase
20-
sorted_freq = sorted(frequency_map.items(), key=lambda x: x[1], reverse=True)
23+
sorted_freq = sorted(frequency_map.items(),
24+
key=lambda x: x[1], reverse=True)
2125
freq_letters = ''.join(letter for letter, _ in sorted_freq)
2226

2327
def decrypt_letter(letter):
2428
if letter.isalpha():
2529
index = freq_letters.find(letter.lower())
26-
decrypted_letter = alphabet[index] if letter.islower() else alphabet[index].upper()
30+
decrypted_letter = alphabet[index] if letter.islower(
31+
) else alphabet[index].upper()
2732
return decrypted_letter
2833
return letter
2934

3035
decrypted_text = ''.join(decrypt_letter(char) for char in cryptogram)
3136
words = decrypted_text.split()
32-
decrypted_words = [word if word.lower() not in word_dict else word_dict[word.lower()] for word in words]
37+
decrypted_words = [word if word.lower(
38+
) not in word_dict else word_dict[word.lower()] for word in words]
3339
return ' '.join(decrypted_words)
3440

41+
3542
def guess_word_length(cryptogram):
3643
spaces = cryptogram.count(' ')
3744
return len(cryptogram) // (spaces + 1)
3845

46+
3947
def manual_decryption(decrypted_text, cryptogram):
4048
print("\nManual Decryption:")
4149
while True:
@@ -47,34 +55,40 @@ def manual_decryption(decrypted_text, cryptogram):
4755
decrypted_text = decrypted_text.replace(guess, replacement)
4856
return decrypted_text
4957

58+
5059
def visualize_frequency(frequency_map):
51-
sorted_freq = sorted(frequency_map.items(), key=lambda x: x[1], reverse=True)
60+
sorted_freq = sorted(frequency_map.items(),
61+
key=lambda x: x[1], reverse=True)
5262
letters, frequencies = zip(*sorted_freq)
5363
plt.bar(letters, frequencies)
5464
plt.xlabel('Letters')
5565
plt.ylabel('Frequency')
5666
plt.title('Letter Frequency in the Cryptogram')
5767
plt.show()
5868

69+
5970
def save_progress(decrypted_text):
6071
with open('progress.pickle', 'wb') as file:
6172
pickle.dump(decrypted_text, file)
6273

74+
6375
def load_progress():
6476
if os.path.exists('progress.pickle'):
6577
with open('progress.pickle', 'rb') as file:
6678
return pickle.load(file)
6779
else:
6880
return None
6981

82+
7083
if __name__ == '__main__':
7184
cryptogram = input("Enter the cryptogram: ")
7285
word_dict_path = input("Enter the path to the word dictionary file: ")
7386

7487
word_dictionary = load_word_dictionary(word_dict_path)
7588

7689
letter_frequencies = get_letter_frequencies(cryptogram)
77-
decrypted_message = load_progress() or decrypt_cryptogram(cryptogram, letter_frequencies, word_dictionary)
90+
decrypted_message = load_progress() or decrypt_cryptogram(
91+
cryptogram, letter_frequencies, word_dictionary)
7892

7993
print("\nOriginal cryptogram:", cryptogram)
8094
print("Decrypted message:", decrypted_message)

0 commit comments

Comments
 (0)