drobna oprava
authorTomas Musil <tomik.musil@gmail.com>
Sat, 24 Mar 2012 19:38:34 +0000 (20:38 +0100)
committerTomas Musil <tomik.musil@gmail.com>
Sat, 24 Mar 2012 19:38:34 +0000 (20:38 +0100)
V jakobsenove algoritmu doplneno "ocesavani", aby skutecne pocital se
vsemi bigramy.

jakobsen.py
robot.py

index 5c0aa24..0127326 100644 (file)
@@ -13,13 +13,11 @@ def nova_tabulka(zprava, abc=MABECEDA):
         for j in abc:
             tabulka[i][j] = 0
     for i in range(len(zprava) - 1):
-        if zprava[i] in tabulka and zprava[i+1] in tabulka[zprava[i]]:
-            tabulka[zprava[i]][zprava[i+1]] += 1
+        tabulka[zprava[i]][zprava[i+1]] += 1
     celkem = sum(sum(tab2.values()) for tab2 in tabulka.values())
-    if celkem != 0:
-        for i in abc:
-            for j in abc:
-                tabulka[i][j] /= float(celkem)
+    for i in abc:
+        for j in abc:
+            tabulka[i][j] /= float(celkem)
     return tabulka
 
 def vzdalenost(tab1, tab2, abc=MABECEDA):
@@ -66,13 +64,17 @@ def jakobsen(zprava, ref):
                 vzdal = v1
             else:
                 slovnik[x], slovnik[y] = slovnik[y], slovnik[x]
+    return slovnik
+    
 
+def desifruj(zprava, mezery=True):
+    if mezery:
+        f = open('ref')
+    else:
+        f = open('refb')
+    ref = pickle.load(f)
+    f.close()
+    slovnik = jakobsen(ocesat(zprava, mezery), ref)
     return '\n'.join([''.join(substituce(zprava, slovnik, ref.abeceda)),
                       ' '.join(ref.abeceda),
                       ' '.join([slovnik[c] for c in ref.abeceda])])
-
-def desifruj(zprava, refs):
-    f = open(refs, 'rb')
-    ref = pickle.load(f)
-    f.close()
-    return jakobsen(zprava, ref)
index 27d17bc..29d0ea9 100755 (executable)
--- a/robot.py
+++ b/robot.py
@@ -76,7 +76,9 @@ if 'L' in opsny:
                    " ale Vase zprava uz bohuzel neni na serveru ulozena.\n")
         sys.exit()
 telo = mail.get_payload().strip()
-if len(telo) < 2:
+if len(ocesat(telo, False)) < 2:
+    posli_mail(odesilatel, "Omluva", "Omlouvam se,"
+                   " ale Vase zprava je prilis kratka.\n")
     sys.exit()
 zprava = telo.upper()
 analyza = []