"""
2010. október: Anagramma
@author Klemand66
"""

print("\n1. feladat\n")

szoveg=input("Kérek egy szöveget: ")

karakterek=[]
for kar in szoveg:
    if kar not in karakterek:
        karakterek.append(kar)
        
print(f'A megadott szövegben {len(karakterek)} különböző karakter található: {" ".join(karakterek)}')
    


print("\n2. feladat\n")

betxt = open("szotar.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("\n3. feladat\n")

def beturendezo(szoveg):
    karlista=list(szoveg)
    karlista.sort()
    return "".join(karlista)

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

for szo in szavak:
    kitxt.write(f'{beturendezo(szo)}\n')
            
kitxt.close()
print("A kiíratás és a szövegfájl lezárása sikeresen befejeződött.\n")



print("\n4. feladat\n")

szo1=input("Kérek egy szót: ")
szo2=input("Kérek egy másik szót: ")

if beturendezo(szo1)==beturendezo(szo2):
    print("Anagramma")
else:
    print("Nem anagramma")



print("\n5. feladat\n")

ujszo=input("Kérek egy szót: ")
ujszo=beturendezo(ujszo)

anagrammak=[]
for szo in szavak:
    if beturendezo(szo)==ujszo:
        anagrammak.append(szo)

if len(anagrammak)>0:
    print("A szó anagrammái a szótárban:")
    for anagramma in anagrammak:
        print(anagramma)
else:
    print("Nincs a szótárban anagramma.")
        


print("\n6. feladat\n")

vezerabck,anagrammalistak=[],[]
for szo in szavak:
    szoabc=beturendezo(szo)
    if szoabc in vezerabck:
        aktindex=vezerabck.index(szoabc)
        anagrammalistak[aktindex].append(szo)
    else:
        vezerabck.append(szoabc)
        anagrammalistak.append([szo]) # itt nyitjuk az új anagrammalistát

hosszak=list(map(len,vezerabck))
maxhossz=max(hosszak)
leghosszabbak=list(filter(lambda i: len(vezerabck[i])==maxhossz,range(len(vezerabck))))

for i in leghosszabbak:
    for anagramma in anagrammalistak[i]:
        print(anagramma)
    print()



print("\n7. feladat\n")

anagrammalistak2d=list(map(lambda i:[anagrammalistak[i],len(vezerabck[i])],range(len(vezerabck))))

anagrammalistak2d.sort(key=lambda elem:elem[1])

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

hossz=min(hosszak)
for elem in anagrammalistak2d:
    if elem[1]>hossz:
        kitxt.write("\n")
        hossz=elem[1]
    kitxt.write(f'{" ".join(elem[0])}\n')

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

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

