seg/trabalho1/afreq.py

61 lines
1.2 KiB
Python

frequencias = {
'A': 14.63,
'B': 1.04,
'C': 3.88,
'D': 4.99,
'E': 12.57,
'F': 1.02,
'G': 1.30,
'H': 1.28,
'I': 6.18,
'J': 0.40,
'K': 0.02,
'L': 2.78,
'M': 4.74,
'N': 5.05,
'O': 10.73,
'P': 2.52,
'Q': 1.20,
'R': 6.53,
'S': 7.81,
'T': 4.34,
'U': 4.63,
'V': 1.67,
'W': 0.01,
'X': 0.21,
'Y': 0.01,
'Z': 0.47
}
def afreq(string):
# determinar a frequencia de cada caractere na string
# comparar com a frequencia de cada caractere na lingua portuguesa
# calcular a diferenca entre as frequencias
str_freq = {}
for c in string:
if not c.isalnum():
continue
if c in str_freq:
str_freq[c] += 1
else:
str_freq[c] = 1
for c in str_freq:
if not c.isalnum():
continue
str_freq[c] /= len(string)
freq_sorted = dict(sorted(str_freq.items(), key=lambda item: item[1]))
possiveis_chaves = []
for c in frequencias:
for k in freq_sorted:
if abs(frequencias[c] - freq_sorted[k]) < 0.5:
possiveis_chaves.append(ord(k) - ord(c))
return possiveis_chaves