taborok=[]

def F1():
    fbe=open('taborok.txt','r')
    for sor in fbe:
        sor=sor.strip().split()
        sor[:4]=map(int,sor[:4])    # első 4 elem legyen egész szám
        taborok.append(sor)
    fbe.close()

def F2():
    print('2. feladat')
    print(f'Az adatsorok száma: {len(taborok)}')    # 28
    print(f'Az először rögzített tábor témája : {taborok[0][-1]}')  # foci
    print(f'Az utoljára rögzített tábor témája: {taborok[-1][-1]}') # filmes

def F3():
    print('3. feladat')
    van=False
    for tabor in taborok:
        if tabor[-1]=='zenei':      # -1, mint index, egy lista utolsó elemét jelöli
            print(f'Zenei tábor kezdődik {tabor[0]}. hó {tabor[1]}. napján.')
            van=True
    if not van:
        print('Nem volt zenei tábor.')

def F4():
    print('4. feladat')
    maximum=0               # maximális az érdeklődés, ahol a diákok betűjeléből
                            # alkotott szöveg a leghosszabb
    for tabor in taborok:
        if len(tabor[4])>maximum:
            maximum=len(tabor[4])
    print('Legnépszerűbbek:')
    for tabor in taborok:
        if len(tabor[4])==maximum:
            print(tabor[0],tabor[1],tabor[-1])

def sorszam(h,n):
    # A nyári szünet első napja 6. hó 16.
    # A nyári szünet 77. napja 8. hó 31.
    # (A nyári hónapok rendre 30, 31, 31 naposak.)
    napok=0
    match h:
        case 6: napok+=(n-15)   # júniusban 15 nap nem nyári szünet
        case 7: napok+=15+n     # július esetén: júniusban 15 nap szünet + a megadott nap
        case 8: napok+=46+n     # augusztus esetén: 15 júniusi nap + 31 júliusi nap + a megadott nap
    return napok

def F6():
    print('6. feladat')
    honap=int(input('hó: '))        # 8
    nap=int(input('nap: '))         # 1
    s=sorszam(honap,nap)            # a megadott dátum sorszáma
    db=0
    for tabor in taborok:
        k=sorszam(tabor[0],tabor[1])    # egy adott tábor kezdőnapjának sorszáma
        v=sorszam(tabor[2],tabor[3])    # egy adott tábor befejező napjának sorszáma
        if k<=s<=v:
            db+=1
    print(f'Ekkor éppen {db} tábor tart.')      # 3

def F7():
    print('7. feladat')
    tanulo=input('Adja meg egy tanuló betűjelét: ')     # L
    erdeklodes=[]
    for tabor in taborok:
        if tanulo in tabor[4]:
            erdeklodes.append(tabor[0:4]+tabor[-1:])    # [-1:] csak azért, hogy az
                                                        # utolsó elemet listaként kezelje
                                                        # a program. Így két listát adok össze,
                                                        # aminek az eredménye egy lista
    erdeklodes=sorted(erdeklodes)
    fki=open('egytanulo.txt','w')
    for t in erdeklodes:
        print(f'{t[0]}.{t[1]}-{t[2]}.{t[3]} {t[4]}',file=fki)
    fki.close()
    # rendezettség miatt elég az "előző" tábor végét az "aktuális" elejéhez hasonlítani:
    utkozes=False
    for i in range(1,len(erdeklodes)):
        elozo=erdeklodes[i-1]       # ezért indul a "range" 1-től
        aktualis=erdeklodes[i]
        if sorszam(elozo[2],elozo[3])>=sorszam(aktualis[0],aktualis[1]):
            utkozes=True
            break           # a feladat nem kéri, hogy keressük meg az ütközést okozó táborokat
    if utkozes:
        print('Nem mehet el mindegyik táborba.')

# ---------------------------------------------------------------------------------        
F1()
F2()
F3()
F4()

F6()
F7()

