Soubor koincidence.py uveden do souladu s dobrymi mravy.
+"""Modul pro praci s indexy koincidence"""
+
from ocesavac import ocesat
from collections import deque
def index_koincidence(text, mezery=False):
from ocesavac import ocesat
from collections import deque
def index_koincidence(text, mezery=False):
- t = ocesat(text, mezery)
+ """Vrati prumerny index koincidence textu."""
+ text = ocesat(text, mezery)
- t = t[1:-1]
- deq = deque(t)
+ text = text[1:-1]
+ deq = deque(text)
- for i in range(1, len(t)):
+ for _ in range(1, len(text)):
- shod += sum (x == y for x, y in zip(deq, t))
- return float(shod)/(len(t)*(len(t) - 1))
+ shod += sum (x == y for x, y in zip(deq, text))
+ return float(shod)/(len(text)*(len(text) - 1))
def index_koincidence2(text1, text2):
"""Pro dva texty vraci index koincidence. Texty nijak neupravuje,
def index_koincidence2(text1, text2):
"""Pro dva texty vraci index koincidence. Texty nijak neupravuje,
return float(shod)/min(len(text1), len(text2))
def index_rozkladu(text, deleni):
return float(shod)/min(len(text1), len(text2))
def index_rozkladu(text, deleni):
+ """Vrati prumerny index koincidence pro text rozdeleny na vice casti
+ (ve stylu 123123123... pro deleni=3). Slouzi napriklad k odhadu
+ delky periodickeho hesla u polyalfabetickych sifer."""
if (deleni == 1):
return index_koincidence(text)
texty = rozklad(ocesat(text, False), deleni)
return sum([index_koincidence(text) for text in texty])/len(texty)
def tabulka_indexu(text):
if (deleni == 1):
return index_koincidence(text)
texty = rozklad(ocesat(text, False), deleni)
return sum([index_koincidence(text) for text in texty])/len(texty)
def tabulka_indexu(text):
+ """Vypise tabulku prumernych indexu pro ruzna deleni textu."""
return '\n'.join(['{1:>2} {0:.3%}'.format(
index_rozkladu(text, d), d) for d in range(1, 11)])
def rozklad(text, deleni):
return '\n'.join(['{1:>2} {0:.3%}'.format(
index_rozkladu(text, d), d) for d in range(1, 11)])
def rozklad(text, deleni):
+ """Vrati pole retezcu, v kazdem jsou znaky z puvodniho textu jejich pozice
+ ma stejny zbytek po deleni cislem 'deleni'."""
texty = []
for i in range(deleni):
texty.append(''.join(
texty = []
for i in range(deleni):
texty.append(''.join(