X-Git-Url: http://git.tomasm.cz/krypto.git/blobdiff_plain/446c6acea51d91c3f43c12981d006893aaee17d1..7bb66b1dd26b04b58b39a43632ea107313307b66:/jakobsen3.py diff --git a/jakobsen3.py b/jakobsen3.py index a2c55f8..6b76c44 100644 --- a/jakobsen3.py +++ b/jakobsen3.py @@ -64,21 +64,28 @@ def jakobsen(zprava, ref): ) vzdal = vzdalenost(tabulka, ref.tabulka, ref.abeceda) - vzdal_old = vzdal + 1 - while vzdal_old > vzdal: - vzdal_old = vzdal - for (x, y) in combinations(ref.abeceda, 2): + a, b = 1, 1 + + slvnk = ref.poradi + + while b < len(ref.abeceda): + x, y = slvnk[a-1], slvnk[a+b-1] + slovnik[x], slovnik[y] = slovnik[y], slovnik[x] + nova_vzdalenost = vzdalenost( + nova_tabulka( + substituce(zprava, slovnik), + ref.abeceda), + ref.tabulka, + ref.abeceda) + if nova_vzdalenost < vzdal: + vzdal = nova_vzdalenost + slvnk[a-1], slvnk[a+b-1] = slvnk[a+b-1], slvnk[a-1] + a, b = 1, 1 + else: slovnik[x], slovnik[y] = slovnik[y], slovnik[x] - nova_vzdalenost = vzdalenost( - nova_tabulka( - substituce(zprava, slovnik), - ref.abeceda), - ref.tabulka, - ref.abeceda) - if nova_vzdalenost < vzdal: - vzdal = nova_vzdalenost - else: - slovnik[x], slovnik[y] = slovnik[y], slovnik[x] + a += 1 + if a + b > len(ref.abeceda): + a, b = 1, b + 1 return slovnik