projekty
/
krypto.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
79366cf
)
lepsi jakobsen
author
Tomas Musil
<tomik.musil@gmail.com>
Thu, 5 Apr 2012 16:43:14 +0000
(18:43 +0200)
committer
Tomas Musil
<tomik.musil@gmail.com>
Thu, 5 Apr 2012 16:43:14 +0000
(18:43 +0200)
jakobsen.py
patch
|
blob
|
history
diff --git
a/jakobsen.py
b/jakobsen.py
index
9b7c0eb
..
aa3cc60
100644
(file)
--- a/
jakobsen.py
+++ b/
jakobsen.py
@@
-53,6
+53,16
@@
def poradi_dle_frekvence(zprava, abc=MABECEDA):
class reference:
pass
class reference:
pass
+def kombinace(abeceda):
+ a = 0
+ b = 1
+ while b < len(abeceda):
+ yield (abeceda[a], abeceda[a + b])
+ a += 1
+ if a + b == len(abeceda):
+ a = 0
+ b += 1
+
def jakobsen(zprava, ref):
"""Pro danou sifrovanou zpravu vrati substitucni slovnik odvozeny s pomoci
Jakobsenova algoritmu s danou referencni tabulkou."""
def jakobsen(zprava, ref):
"""Pro danou sifrovanou zpravu vrati substitucni slovnik odvozeny s pomoci
Jakobsenova algoritmu s danou referencni tabulkou."""
@@
-66,7
+76,7
@@
def jakobsen(zprava, ref):
vzdal_old = vzdal + 1
while vzdal_old > vzdal:
vzdal_old = vzdal
vzdal_old = vzdal + 1
while vzdal_old > vzdal:
vzdal_old = vzdal
- for (x, y) in
combinations(ref.abeceda
, 2):
+ for (x, y) in
kombinace(ref.poradi
, 2):
slovnik[x], slovnik[y] = slovnik[y], slovnik[x]
nova_vzdalenost = vzdalenost(
nova_tabulka(
slovnik[x], slovnik[y] = slovnik[y], slovnik[x]
nova_vzdalenost = vzdalenost(
nova_tabulka(
@@
-76,6
+86,7
@@
def jakobsen(zprava, ref):
ref.abeceda)
if nova_vzdalenost < vzdal:
vzdal = nova_vzdalenost
ref.abeceda)
if nova_vzdalenost < vzdal:
vzdal = nova_vzdalenost
+ break
else:
slovnik[x], slovnik[y] = slovnik[y], slovnik[x]
return slovnik
else:
slovnik[x], slovnik[y] = slovnik[y], slovnik[x]
return slovnik