From 7b3f22c9b4cde9dc3932bc9a58c03865e5fdad45 Mon Sep 17 00:00:00 2001 From: Tomas Musil Date: Wed, 4 Apr 2012 22:06:34 +0200 Subject: [PATCH 1/1] lepsi poradi prohozeni --- jakobsen3.py | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) 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 -- 2.4.2