lovesek=[]      #lista szövegelemekkel (pl.: '+-++--+-')
#--------------------------------------------------------------------------------
# 1. Olvassa be a verseny.txt állományban található adatokat, és annak
#    felhasználásával oldja meg a következő feladatokat!
#--------------------------------------------------------------------------------
def F1():
    print('1.feladat:\nadatok beolvasása')

    fbe=open('verseny.txt','r')
    global vsz
    vsz=int(fbe.readline())         #első sorban a versnyzők száma van
    for sor in fbe:                 #további sorok beolvasása ciklikusan
        lovesek.append(sor.strip())
    fbe.close()
    print(lovesek)
#--------------------------------------------------------------------------------
# 2. Írja a képernyőre azon versenyzők rajtszámát, akiknek egymás után két
#    (vagy több) lövése is talált! A versenyzők rajtszámát egy-egy szóközzel
#    válassza el egymástól!
#--------------------------------------------------------------------------------
def F2():
    print('\n2. feladat:')
    print('Az egymast kovetoen tobbszor talalo versenyzok:',end=' ')
    for i,loves in enumerate(lovesek,1):
        if loves.find('++')>-1:
            print(i,end=' ')
        
    print()
#--------------------------------------------------------------------------------
# 3. Írja a képernyőre, hogy melyik versenyző adta le a legtöbb lövést!
#    Ha többen is ugyanannyi lövést adtak le, elegendő egyikük rajtszámát kiírni.
#--------------------------------------------------------------------------------
def F3():
    print('\n3.feladat:')
    maxsorozat=0
    for i,loves in enumerate(lovesek,1):
        if len(loves)>maxsorozat:
            maxsorozat=len(loves)
            nyero=i
    print('A legtobb lovest leado versenyzo rajtszama: %d' %nyero)
#--------------------------------------------------------------------------------
# 4. Készítsen függvényt loertek néven az alábbi algoritmus alapján! A függvény
#    egy + és – jeleket tartalmazó, legfeljebb 40 hosszúságú karaktersorozathoz
#    hozzárendeli a feladatban képviselt pontértékét. A függvény elkészítésekor
#    az algoritmusban megadott változóneveket használja! Az elkészített függvényt
#    a további feladatok megoldásánál használja fel! A függvény bemenő paramétere
#    az egy játékos lövéseit leíró karaktersorozat, értéke pedig az ahhoz rendelt
#    pontszám.
#           Függvény loertek(sor:karaktersorozat):egész szám
#               aktpont:=20
#               ertek:=0
#               Ciklus i:=1-től hossz(sor)-ig
#                   Ha aktpont>0 és sor[i]=”-” akkor
#                       aktpont:=aktpont-1
#                   Különben
#                       ertek:=ertek+aktpont
#                   Elágazás vége
#               Ciklus vége
#               loertek:=ertek
#           Függvény vége
#--------------------------------------------------------------------------------
def loertek(sor):
    aktpont=20
    ertek=0
    for i in range(len(sor)):
        if aktpont>0 and sor[i]=='-':
            aktpont-=1
        else:
            ertek+=aktpont
    return ertek
#--------------------------------------------------------------------------------
# 5. Kérje be a felhasználótól egy versenyző sorszámát, majd írja ki, hogy:
#   a. hányadik lövései találtak (az értékeket egymástól szóközzel válassza el!)
#   b. hány korongot talált el összesen
#   c. milyen hosszú volt a leghosszabb hibátlan lövéssorozata
#   d. hány pontot ért el!
#   Az eredmény megjelenítése előtt írja képernyőre a részfeladat betűjelét is!
#--------------------------------------------------------------------------------
def F5():
    print('\n5.feladat:')
    rajtszam=int(input('Adjon meg egy rajtszamot! '))-1
    print('5a. feladat: Celt ero lovesek: ',end='')
    talalat=0
    hibatlan_hossz,hossz=0,0
    for i,loves in enumerate(lovesek[rajtszam],1):
        if loves=='+':
            print(i,end=' ')
            talalat+=1
            hossz+=1
        else:
            if hossz>hibatlan_hossz:
                hibatlan_hossz=hossz
            hossz=0
                
    print()
    print('5b. feladat: Az eltalalt korongok szama: %d' %talalat)
    print('5c. feladat: A leghosszabb hibatlan sorozat hossza: %d' %hibatlan_hossz)
    print('5d. feladat: A versenyzo pontszama: %d' %loertek(lovesek[rajtszam]))
#--------------------------------------------------------------------------------
# 6. Állítsa elő a sorrend.txt állományban a verseny végeredményét! A fájlban
#    soronként tüntesse fel a versenyző helyezését, rajtszámát és pontszámát!
#    A helyezés megadásakor a holtversenyt a bevezetőben megfogalmazott szabályok
#    alapján az alábbi mintához hasonlóan kezelje! Az adatokat egy-egy
#    tabulátorral (ASCII kódja a 9-es) válassza el egymástól! A lista legyen
#    pontszám szerint csökkenő!
#    Például a feladat elején olvasható példa bemenet esetén a fájl tartalma:
#       1   2   73
#       2   4   40
#       3   1   38
#       3   5   38
#       5   3   36
#--------------------------------------------------------------------------------
def F6():
    print('6.feladat:\nadatok fájlba írása')
    fki=open('sorrend.txt','w')
    pontszamok=[]   #Ennek a listának adatpár (tuple) elemei lesznek: (rajtszam,pontszam)
    for i,loves in enumerate(lovesek,1):
        pontszamok.append((i,loertek(loves)))
    #Rendezés pontszámok szerint csökkenő sorrendbe
    pontszamok=sorted(pontszamok,key=lambda x:x[1],reverse=True)
    print(pontszamok)

    
    pontsz=-1   #Kamu adat, ennél biztosan nagyobb (legalább 0) pontszáma lesz bárkinek!
    for i,pont in enumerate(pontszamok,1):
        if pont[1]!=pontsz:     #Ha az katuális ember pontszáma eltér az előzőtől, akkor
            helyezes=i          #helyezése a fizikai sorszáma a rendezett listában,
            pontsz=pont[1]      #és a következő cikluslépésre előkészítem a pontsz adatot
        
        print(helyezes,'\t',pont[0],'\t',pont[1],file=fki)
    fki.close()
        
    
                          
#-------------------------------F Ő M O D U L------------------------------------
F1()
F2()
F3()
F5()
F6()

