Pocatecni commit
[krypto.git] / koincidence.py
1 from ocesavac import ocesat
2 from collections import deque
3
4 def index_koincidence(text):
5     t = ocesat(text, False) #zatim bez mezer
6     deq = deque(t)
7     shod = 0
8     for i in range(1, len(t)):
9         deq.rotate(1)
10         shod += sum (x == y for x, y in zip(deq, t))
11     return float(shod)/(len(t)*(len(t) - 1))
12     
13 def index_rozkladu(text, deleni):
14     if (deleni == 1):
15         return index_koincidence(text)
16     t = ocesat(text, False) #zatim bez mezer
17     texty = rozklad(t, deleni)
18     return sum([index_koincidence(text) for text in texty])/len(texty)
19
20 def tabulka_indexu(text):
21     return '\n'.join(['{1:>2} {0:.3%}'.format(
22         index_rozkladu(text, d), d) for d in range(1, 11)])
23
24 def rozklad(text, deleni):
25     texty = []
26     for i in range(deleni):
27         texty.append(''.join(
28             [text[j] for j in range(len(text)) if j % deleni == i]))
29     return texty