drobnosti
[krypto.git] / koincidence.py
index c01f28d..efb903c 100644 (file)
@@ -1,20 +1,27 @@
 from ocesavac import ocesat
 from collections import deque
 
 from ocesavac import ocesat
 from collections import deque
 
-def index_koincidence(text):
-    t = ocesat(text, False) #zatim bez mezer
+def index_koincidence(text, mezery=False):
+    t = ocesat(text, mezery)
+    if mezery:
+        t = t[1:-1]
     deq = deque(t)
     shod = 0
     for i in range(1, len(t)):
         deq.rotate(1)
         shod += sum (x == y for x, y in zip(deq, t))
     return float(shod)/(len(t)*(len(t) - 1))
     deq = deque(t)
     shod = 0
     for i in range(1, len(t)):
         deq.rotate(1)
         shod += sum (x == y for x, y in zip(deq, t))
     return float(shod)/(len(t)*(len(t) - 1))
+
+def index_koincidence2(text1, text2):
+    """Pro dva texty vraci index koincidence. Texty nijak neupravuje,
+    ocekava ze se skladaji pouze ze znaku pracovni abecedy."""
+    shod = sum (x == y for x, y in zip(text1, text2))
+    return float(shod)/min(len(text1), len(text2))
     
 def index_rozkladu(text, deleni):
     if (deleni == 1):
         return index_koincidence(text)
     
 def index_rozkladu(text, deleni):
     if (deleni == 1):
         return index_koincidence(text)
-    t = ocesat(text, False) #zatim bez mezer
-    texty = rozklad(t, deleni)
+    texty = rozklad(ocesat(text, False), deleni)
     return sum([index_koincidence(text) for text in texty])/len(texty)
 
 def tabulka_indexu(text):
     return sum([index_koincidence(text) for text in texty])/len(texty)
 
 def tabulka_indexu(text):