"""
2017. május: Tesztverseny
@author Klemand66
"""


print("\n1. feladat\n")



betxt = open("valaszok.txt")

sor=betxt.readline()
megoldas=sor.strip()

kodok, valaszok = [], []
for sor in betxt:
    darsor=sor.strip().split()
    kodok.append(darsor[0])
    valaszok.append(darsor[1])       
        
betxt.close()
print("A beolvasás és a szövegfájl lezárása sikeresen befejeződött.")



print("\n2. feladat\n")

print(f'A vetélkedőn {len(kodok)} versenyző indult.')

                    

print("\n3. feladat\n")

aktkod=input("Kérem egy versenyző azonosítóját ( Pl. AB123 AH97 JO001): ")

aktindex=kodok.index(aktkod) # feltételezhettük, hogy létezik a megadott azonosító
aktvalasz=valaszok[aktindex]
    
print(f'{aktvalasz}\t(a versenyző válasza)')         
                    


print("\n4. feladat\n")

def ertek(i):
    if aktvalasz[i]==megoldas[i]:
        return "+"
    else:
        return " "    

print(f'{megoldas}\t(a helyes megoldás)')
helyesek=list(map(lambda i: ertek(i) ,range(len(aktvalasz))))
print(f'{"".join(helyesek)}\t(a versenyző helyes válaszai)')



print("\n5. feladat\n")

aktssz=int(input(f'Kérem egy feladat sorszámát (1 <= sorszám <= {len(megoldas)} ): '))

jok=list(filter(lambda i: valaszok[i][aktssz-1]==megoldas[aktssz-1] ,range(len(valaszok))))
jodb=len(jok)
print(f'A feladatra {jodb} fő, a versenyzők {100*jodb/len(valaszok):.2f}%-a adott helyes választ.')



print("\n6. feladat\n")

def sav(i):
    ihat=[0,5,10,13,14] # indexhatárok
    bennevan=list(map(lambda j: ihat[j-1]<=i and i<ihat[j] ,range(1,len(ihat))))
    return bennevan.index(True)

def pontozo(valasz):    
    pontlista=[3,4,5,6]    
    """
    A pontlista=[3,3,3,3,3,4,4,4,4,4,5,5,5,6] megadás esetén
    a pontoknál közvetlenül pontlista[i]-re hivatkozhatnánk,
    de egy hosszabb lista esetén az már nem lenne elegáns megoldás.
    """
    jok=list(filter(lambda i: valasz[i]==megoldas[i],range(len(valasz))))
    pontok=list(map(lambda i: pontlista[sav(i)] ,jok))
    return sum(pontok)

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

for i in range(len(kodok)):
    kitxt.write(f'{kodok[i]} {pontozo(valaszok[i])}\n')
  
kitxt.close()
print("A kiíratás és a szövegfájl lezárása sikeresen befejeződött.")



print("\n7. feladat\n")

eredmenyek=[]
for i in range(len(kodok)):    
    eredmenyek.append([kodok[i],pontozo(valaszok[i])])
    
eredmenyek.sort(key=lambda er: er[1], reverse=True)

dij, aktpont=0, eredmenyek[0][1]+1 # mindkét érték rögtön változni fog

for i,er in enumerate(eredmenyek):
    if er[1]<aktpont:
        dij=dij+1
        aktpont=er[1]
    if dij<=3:
        print(f'{dij}. díj ({aktpont} pont): {er[0]}')
    else:
        break


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