def sinonims(llista_linies_sinonims):
    dsin = {}
    for linia_sinonims in llista_linies_sinonims:
        lsinonims = linia_sinonims.split()
        dsin[lsinonims[0]] = lsinonims[1:]
    return dsin

def llegeix_sinonims(nom_fitxer):
    with open(nom_fitxer, 'r') as f:
        dsin = sinonims(f)
    return dsin

def corregeix_linia(dicc, nlinia, linia_text_incorrecte):
    lti = linia_text_incorrecte.split()
    lpar = []
    for paraula in lti:
        if paraula in dicc:
            lsin = dicc[paraula]
            lpar.append(lsin[nlinia%len(lsin)])
        else:
            lpar.append(paraula)
    return ' '.join(lpar)

def corregeix(dicc, text):
    llista_linies_text_incorrecte = text.split('\n')
    llinies = []
    for nlinia, linia_text_incorrecte in enumerate(llista_linies_text_incorrecte):
        linia_corregida = corregeix_linia(dicc, nlinia, linia_text_incorrecte)
        llinies.append(linia_corregida)
    return '\n'.join(llinies)

def corregeix_fitxer(nomf_sinonims, nomf_text, nomf_corregit):
    dicc = llegeix_sinonims(nomf_sinonims)
    with open(nomf_text, 'r') as ftext, open(nomf_corregit, 'w') as fcorregit:
        for nlinia, linia_text_incorrecte in enumerate(ftext):
            linia_corregida = corregeix_linia(dicc, nlinia, linia_text_incorrecte)
            fcorregit.write(linia_corregida+'\n')

    
