coisas
This commit is contained in:
+30
-10
@@ -1,3 +1,9 @@
|
||||
import sys
|
||||
|
||||
if len(sys.argv) < 2:
|
||||
print("Usage: python3 afreq.py [arquivo]")
|
||||
sys.exit(1)
|
||||
|
||||
frequencias = {
|
||||
'A': 14.63,
|
||||
'B': 1.04,
|
||||
@@ -27,6 +33,10 @@ frequencias = {
|
||||
'Z': 0.47
|
||||
}
|
||||
|
||||
frequencias = sorted(frequencias.keys(), key=lambda x: frequencias[x])
|
||||
frequencias.reverse()
|
||||
caracteres = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
|
||||
|
||||
def afreq(string):
|
||||
# determinar a frequencia de cada caractere na string
|
||||
# comparar com a frequencia de cada caractere na lingua portuguesa
|
||||
@@ -42,19 +52,29 @@ def afreq(string):
|
||||
else:
|
||||
str_freq[c] = 1
|
||||
|
||||
for c in str_freq:
|
||||
if not c.isalnum():
|
||||
continue
|
||||
freq_sorted = sorted(str_freq.items(), key=lambda item: item[1])
|
||||
freq_sorted = [x[0] for x in freq_sorted]
|
||||
freq_sorted.reverse()
|
||||
|
||||
str_freq[c] /= len(string)
|
||||
|
||||
freq_sorted = dict(sorted(str_freq.items(), key=lambda item: item[1]))
|
||||
print(freq_sorted[0], frequencias[0])
|
||||
print(freq_sorted[1], frequencias[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))
|
||||
|
||||
for i, c in enumerate(frequencias):
|
||||
if c not in freq_sorted:
|
||||
continue
|
||||
|
||||
index_c = caracteres.index(c)
|
||||
index_freq = caracteres.index(freq_sorted[i])
|
||||
|
||||
print(c, index_c, index_freq)
|
||||
|
||||
possiveis_chaves.append((index_freq - index_c) % 26) # (indice da freq da letra na str - indice da letra em PT) % ignorar letras maiusculas
|
||||
|
||||
return possiveis_chaves
|
||||
|
||||
file_str = open(sys.argv[1], 'r').read()
|
||||
possiveis_chaves = afreq(file_str)
|
||||
|
||||
print(possiveis_chaves)
|
||||
Reference in New Issue
Block a user