From: Tomas Musil Date: Wed, 21 Mar 2012 22:53:51 +0000 (+0100) Subject: Jakobsen bez mezer X-Git-Url: http://git.tomasm.cz/krypto.git/commitdiff_plain/ee02d49796a9fcc1ff8be4a69149c0a371121d8e Jakobsen bez mezer Drobne upravy Jakobsena, aby fungoval i bez mezer. --- diff --git a/jakobsen.py b/jakobsen.py index 25f01dc..5c0aa24 100644 --- a/jakobsen.py +++ b/jakobsen.py @@ -51,23 +51,23 @@ class reference: pass def jakobsen(zprava, ref): - slovnik = dict(zip(poradi_dle_frekvence(zprava), ref.poradi)) - tabulka = nova_tabulka(substituce(zprava, slovnik)) - vzdal = vzdalenost(tabulka, ref.tabulka) + slovnik = dict(zip(poradi_dle_frekvence(zprava, ref.abeceda), ref.poradi)) + tabulka = nova_tabulka(substituce(zprava, slovnik, ref.abeceda), ref.abeceda) + 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): slovnik[x], slovnik[y] = slovnik[y], slovnik[x] - v1 = vzdalenost(nova_tabulka(substituce(zprava, slovnik)), - ref.tabulka) + v1 = vzdalenost(nova_tabulka(substituce(zprava, slovnik, ref.abeceda), ref.abeceda), + ref.tabulka, ref.abeceda) if v1 < vzdal: vzdal = v1 else: slovnik[x], slovnik[y] = slovnik[y], slovnik[x] - return '\n'.join([''.join(substituce(zprava, slovnik)), + return '\n'.join([''.join(substituce(zprava, slovnik, ref.abeceda)), ' '.join(ref.abeceda), ' '.join([slovnik[c] for c in ref.abeceda])]) diff --git a/robot.py b/robot.py index 596f386..16eaaf0 100755 --- a/robot.py +++ b/robot.py @@ -122,6 +122,9 @@ analyza.append(koincidence.tabulka_indexu(zprava)) if mod_m: analyza.append("\nJakobsen (s mezerami):") analyza.append(jakobsen.desifruj(zprava, './ref')) +if mod_x: + analyza.append("\nJakobsen (bez mezer):") + analyza.append(jakobsen.desifruj(zprava, './bref')) # Posuny v abecede # TODO najit nejvhodnejsi posuny a vypsat jenom ty