"""
2006. október: Zenei adók
@author Klemand66
"""

print("\n1. feladat\n")

betxt = open("musor.txt")

adok=[]
percek=[]
mpek=[]
azok=[]

z = int(betxt.readline().strip())

for i in range(z):
    sor=betxt.readline().strip()
    s=sor.index(" ")
    adok.append(int(sor[:s]))
    sor=sor[s+1:]
    s=sor.index(" ")
    percek.append(int(sor[:s]))
    sor=sor[s+1:]
    s=sor.index(" ")
    mpek.append(int(sor[:s]))
    azok.append(sor[s+1:])

betxt.close()
print("A beolvasás és a fájl lezárása sikeresen befejeződött.")


print("\n2. feladat\n")

for i in range(1,4):
    print(f'A(z) {i}. adón {adok.count(i)} dal hallható.')
    

print("\n3. feladat\n")

def konvertalo(t):
    mp=t%60
    t=t//60
    perc=t%60
    ora=t//60
    return f'{ora:02}:{perc:02}:{mp:02}' # bevezető nullák


akt=[0,0,0]

kezdetek=[]
vegek=[]

for i,ado in enumerate(adok):
    kezdetek.append(akt[ado-1])
    akt[ado-1]+=60*percek[i]+mpek[i]
    vegek.append(akt[ado-1])

EC=list(filter(lambda i:("Eric Clapton" in azok[i]) and (adok[i]==1),range(len(adok))))

if len(EC)>=2:
    elsokezd=kezdetek[EC[0]]
    utolsoveg=vegek[EC[-1]]
    ido=utolsoveg-elsokezd        
    print(f'Az első Eric Clapton szám kezdete ({konvertalo(elsokezd)})\n\
és az utolsó vége ({konvertalo(utolsoveg)})\n\
között eltelt idő {konvertalo(ido)} az 1. adón.')
else:
    print("Nem játszottak két Eric Clapton számot az 1. adón.")


print("\n4. feladat\n")

voltado=[False,False,False]
"""
A feladat szerint feltételezhetjük, hogy amikor az "Omega:Legenda" dal kezdődik valamelyik adón,
akkor a többin is van még adás. Ez sajnos nem teljesül, ezért megvizsgálom.
Azt viszont az egyszerűség kedvéért feltételezem, hiszen a listából is jól látszik,
hogy már mindegyik adón volt a megadott dal előtt valamilyen dal.
"""
if "Omega:Legenda" in azok:
    aktindex=azok.index("Omega:Legenda")
    aktado=adok[aktindex]
    voltado[aktado-1]=True
    aktkezdet=kezdetek[aktindex]
    print(f'Az) "Omega:Legenda" dal a(z) {aktado}. adón kezdődött {konvertalo(aktkezdet)} időpontban.')
    egyik=list(filter(lambda i:(kezdetek[i]<aktkezdet) and (adok[i]!=aktado),range(len(adok))))    
    egyikdal=azok[egyik[-1]]
    egyikado=adok[egyik[-1]]
    voltado[egyikado-1]=True
    print(f'A(z) {egyikado}. adón a(z) "{egyikdal}" dal kezdődött előtte utoljára,')
    if vegek[egyik[-1]]>aktkezdet:
        print(f'{konvertalo(kezdetek[egyik[-1]])} időpontban kezdődött és még hallható is volt.')
    else:
        print(f'de már {konvertalo(vegek[egyik[-1]])} időpontban véget ért, az adó műsora befejeződött.')
    masikado=voltado.index(False)+1
    masik=list(filter(lambda i:(kezdetek[i]<aktkezdet) and (adok[i]==masikado),range(len(adok))))        
    masikdal=azok[masik[-1]]
    print(f'A(z) {masikado}. adón a(z) "{masikdal}" dal kezdődött előtte utoljára,')
    if vegek[masik[-1]]>aktkezdet:
        print(f'{konvertalo(kezdetek[masik[-1]])} időpontban kezdődött és még hallható is volt.')
    else:
        print(f'de már {konvertalo(vegek[masik[-1]])} időpontban véget ért, az adó műsora befejeződött.')         
else:
    print('Nem játszották egyik adón sem az "Omega:Legenda" számot')


print("\n5. feladat\n")

def talal(mit,miben):
    mit=mit.lower()
    miben=miben.lower()
    van=True
    i=0
    while van and i<len(mit):
        if mit[i] in miben:
            aktindex=miben.index(mit[i])
            miben=miben[aktindex+1:]
        else:
            van=False
        i+=1
    return van
        
kitxt = open("keres.txt","w")

foszlany=input("Kérem a felismerhető karaktereket: ")
foszlany=foszlany.strip().lower()

kitxt.write(f'{foszlany}\n')

for az in azok:
    if talal(foszlany,az):
        kitxt.write(f'{az}\n')

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


print("\n6. feladat\n")

kezd=0 
veg=180 # 0 órakor hírekkel kezd
ora=0

for i,ado in enumerate(adok):
    if ado==1:
        kezd=veg
        hossz=60+percek[i]*60+mpek[i]
        veg=kezd+hossz
        if veg>(ora+1)*3600:
            ora+=1
            kezd=ora*3600+180
            veg=kezd+hossz

print(f'Az új műsorszerkezetben az 1. adó műsorának befejezési időpontja: \
{konvertalo(veg)}')


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