+ return analyza
+
+def eu_vzdalenost(vec1, vec2):
+ """Euklidovska vzdalenost dvou vektoru."""
+ return sum([(x - y)**2 for (x, y) in zip(vec1, vec2)])
+
+def nejlepsi(text):
+ """Vrati text (neocesany) posunuty tak, aby mel frekvence znaku co
+ nejblizsi cestine bez mezer."""
+ posunuti = nej_posun(text)
+ return (posunuti, ''.join([posun(char, posunuti) for char in text.upper()]))
+
+def nej_posun(text):
+ """Vrati pocet znaku v abecede, o ktere by se mel text posunout, aby mel
+ frekvence znaku co nejblize cestine bez mezer."""
+ ref = referencni.nacti('bref')
+ freq = dict()
+ for char in ocesat(text, False):
+ freq[char] = freq.get(char, 0) + 1
+ celkem = sum(freq.values())
+ frekv = [float(freq.get(char, 0))/celkem for char in ABECEDA]
+ vzdalenost = eu_vzdalenost(frekv, ref.frekvence)
+ posunuti = 0
+ for i in range(1, 26):
+ frekv = [frekv[25]] + frekv[:-1]
+ nova_vzdalenost = eu_vzdalenost(frekv, ref.frekvence)
+ if nova_vzdalenost < vzdalenost:
+ vzdalenost = nova_vzdalenost
+ posunuti = i
+ return posunuti