"""
2005. október: Vignère tábla
@author Klemand66
"""

print("\n1. feladat\n")

nysz=input("Kérek egy max. 255 karakterből álló ékezetes szöveget!\n")


print("\n2. feladat\n")

nysz=nysz.upper()

mabc = "AÁBCDEÉFGHIÍJKLMNOÓÖŐPQRSTUÚÜŰVWXYZ"
aabc = "AABCDEEFGHIIJKLMNOOOOPQRSTUUUUVWXYZ"

asz="" # az átalakított szöveg

for k in nysz:
    if k in mabc:
        i=mabc.index(k)
        asz+=aabc[i]
        
print("A nyílt szöveg átalakítása megtörtént.")


print("\n3. feladat\n")

print(asz)


print("\n4. feladat\n")

kulcs=input("Kérem a kulcsszót, egy max. 5 karakterből álló ékezetmentes szót! ")

kulcs=kulcs.upper()


print("\n5. feladat\n")

n=len(asz)//len(kulcs)
m=len(asz)%len(kulcs)

ksz=n*kulcs+kulcs[:m] # a kulcsszöveg
print(ksz)


print("\n6. feladat\n")

betxt = open("Vtabla.dat")

tabla=[]
for sor in betxt:
    sor=sor.strip()
    tabla.append(list(sor))

betxt.close()

# Vegyük észre, hogy a táblázat első oszlopa és sora is éppen az angol abc.

abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

tsz="" # a titkosított szöveg

for i in range(len(asz)):
    s=abc.index(asz[i])
    o=abc.index(ksz[i])
    tsz+=tabla[s][o]
    
print("A fájlbeolvasás és a kódolás megtörtént.")


print("\n7. feladat\n")

kitxt = open("kodolt.dat","w")

print(tsz,"\n")
kitxt.write(f'{tsz}\n')

kitxt.close()
print("A kiíratás és a szövegfájl lezárása sikeresen befejeződött.\n")

# Szorgalmi feladat: a kódolt szöveg visszafejtése

vsz="" # a visszafejtett szöveg

for i in range(len(tsz)):
    """
    A tábla oszlopát a kulcsszöveg aktuális betűje határozza meg.
    Ebből az oszlopból kell kiválasztanunk a titkos szöveg aktuális betűjét,
    megkeresni, hogy melyik sorban van, annak az első eleme kell.
    """
    o=abc.index(ksz[i])
    tablaoszlop=list(map(lambda i:tabla[i][o],range(len(tabla))))
    # a kétdimenziós lista oszlopából egy sima listát készítettünk
    s=tablaoszlop.index(tsz[i])
    vsz+=tabla[s][0]

print(f'A kódolt szöveg visszafejtése:\n{vsz}\n')

input("A befejezéshez nyomd meg az ENTER billentyűt!")
