"""
2007. május: SMS szavak
@author Klemand66
"""

print("\n1. feladat\n")

def betukodolo(betu):
    betu=betu.lower()
    abc="abcdefghijklmnopqrstuvwxyz"
    kod="22233344455566677778889999"
    aktindex=abc.index(betu)
    return kod[aktindex]

betu=input("Kérek egy betűt: ")

print(f'A megadott {betu} betű kódja {betukodolo(betu)}')


print("\n2. feladat\n")

def szokodolo(szo):
    kod=""
    for betu in szo:
        kod+=betukodolo(betu)
    return kod
    
szo=input("Kérek egy szót: ")

print(f'A megadott {szo} szó kódja {szokodolo(szo)}')


print("\n3. feladat\n")

betxt = open("szavak.txt")
szavak=[]

for sor in betxt:
    szavak.append(sor.strip())
    
betxt.close()
print("A beolvasás és a fájl lezárása sikeresen befejeződött.")


print("\n4. feladat\n")

hosszak=list(map(lambda szo: len(szo),szavak))
maxhossz=max(hosszak)
leghosszabbak=list(filter(lambda szo: len(szo)==maxhossz,szavak))

print(f'A leghosszabb szó (szavak) hossza {maxhossz}')
print(f'A leghosszabb szó (szavak): ',end="")

for szo in leghosszabbak:
    print(f'{szo} ',end="")
print()


print("\n5. feladat\n")

rovidek=list(filter(lambda szo: len(szo)<6,szavak))

print(f'A fájlban {len(rovidek)} rövid szó található.')


print("\n6. feladat\n")

kitxt = open("kodok.txt","w")

for szo in szavak:
    kitxt.write(f'{szokodolo(szo)}\n')

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


print("\n7. feladat\n")

szamsor=input("Kérek egy számsort: ")
aktkod=szamsor.strip()

kodok=[]

for szo in szavak:
    kodok.append(szokodolo(szo))

jok=list(filter(lambda i: kodok[i]==aktkod,range(len(szavak))))

print(f'\nA megadott {aktkod} számsorhoz tartozó szavak: ')

for i in jok:
    print(f'{szavak[i]} ',end="")
print()


print("\n8. feladat\n")

kodlista=[]
szolista=[]

for i,kod in enumerate(kodok):
    if kod in kodlista:
        aktindex=kodlista.index(kod)
        szolista[aktindex].append(szavak[i])
    else:
        kodlista.append(kod)
        szolista.append([szavak[i]])

sor=""

for i,kod in enumerate(kodlista):
    if len(szolista[i])>1:
        for szo in szolista[i]:
            sor+=f'{szo} : {kod}; '
            if len(sor)>80:
                print(sor)
                sor=""
print(sor)


print("\n9. feladat\n")

szodb=list(map(lambda i: len(szolista[i]),range(len(szolista))))
maxhossz=max(szodb)
leggazdagabbak=list(filter(lambda i: len(szolista[i])==maxhossz,range(len(szolista))))                    

print(f'A leggazdagabb kód(ok) szavainak száma {maxhossz}')
print(f'A kód(ok) és szavai(k): ')

for i in leggazdagabbak:
    print(f'{kodlista[i]} ',end="")
    for szo in szolista[i]:
        print(f'{szo} ',end="")
    print()
print()


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

