"""Modul pro lamani Vigenerovi sifry."""

from koincidence import rozklad
from ocesavac import ocesat
from posuny import nej_posun, posun
from spolecne import cisla_na_text

def soucet(x, y):
    return x + y

def vysledek(zprava, delka_h):
    """Najde heslo dane delky, pri jehoz aplikaci budou frekvence znaku nejlepe
    odpovidat cestine."""
    rozklady = rozklad(ocesat(zprava, False), delka_h)
    posuny = [nej_posun(text) for text in rozklady]
    posunute = [''.join([posun(c, posuny[i]) for c in rozklady[i]]) for i in range(len(posuny))]
    vysledek = [x for x  in reduce(soucet, (map(None, *posunute)[i] for i in range(len(rozklady[0])))) if x != None]
    return cisla_na_text(posuny), ''.join(vysledek)
