"""
2016. október: Telefonos ügyfélszolgálat
@author Klemand66
"""


print("\n1. feladat\n")

def mpbe(o,p,mp):
    return o*3600+p*60+mp

print(f'Az elkészített függvény:\n\n\
def mpbe(o,p,mp):\n\
    return o*3600+p*60+mp')



print("\n2. feladat\n")

betxt = open("hivas.txt")

hivasok=[]

for sor in betxt:
    darsor=sor.strip().split()
    intsor=list(map(int ,darsor))
    adatsor=intsor[:3]+[mpbe(intsor[0],intsor[1],intsor[2])]\
           +intsor[3:]+[mpbe(intsor[3],intsor[4],intsor[5])]
    #0: kó 1: kp 2: kmp 3: kmpbe 4: vó 5: vp 6: vmp 7: vmpbe
    hivasok.append(adatsor)
        
betxt.close()
print("A beolvasás és a szövegfájl lezárása sikeresen befejeződött.")



print("\n3. feladat\n")

oradbk=[]
for i in range(24):
    oradbk.append(0)

for hivas in hivasok:
    aktindex=hivas[0]
    oradbk[aktindex]+=1
    
print("Az óránkénti hívások száma: ")
for i in range(24):
    if oradbk[i]>0:
        print(f'{i:2} óra {oradbk[i]:2} hívás')
    


print("\n4. feladat\n")

maxind=max(range(len(hivasok)),key=lambda i: hivasok[i][7]-hivasok[i][3])
print(f'A leghosszabb ideig vonalban levő hívó a(z) {maxind+1}. sorban szerepel,\n\
a hívás hossza {hivasok[maxind][7]-hivasok[maxind][3]} másodperc.')



print("\n5. feladat\n")

idosor=input("Kérek egy időpontot 8 és 12 óra között óra perc mp alakban: ")
darido=idosor.strip().split()
o,p,mp=int(darido[0]),int(darido[1]),int(darido[2])
aktido=mpbe(o,p,mp)

"""
Azok közül, akiknél a híváskezdés ideje <= az aktuális időpontnál, a bontásideje viszont >=,
a legkisebb sorszámú éppen beszél, az utána következők pedig várakoznak.
"""
aktindexek=list(filter(lambda i: hivasok[i][3]<=aktido and  hivasok[i][7]>=aktido ,range(len(hivasok))))
if len(aktindexek)>0:
    besz=aktindexek[0]+1
    varakozok=list(map(lambda i: str(i+1),aktindexek[1:]))
    print(f'A(z) {besz}. hívó beszél és {len(varakozok)} várakozó van.\n\
(A várakozók: {"., ".join(varakozok)}.)')
else:
    print("Nem volt beszélő.")



print("\n6. feladat\n")

"""
Először kiszűrjük azoknak a hívóknak az indexét, akik aktívak voltak munkaidőben,
azaz hívásukat 12 óra előtt kezdték és 8 óra után bontották a vonalat.
Második lépésben pedig azokét, akik az összes előttük lévő hívás bontása után fejezték be a hívásukat.
Ők mind beszéltek, pontosan az indexük sorrendjében.
"""
munkaidoben=list(filter(lambda i: hivasok[i][3]<=12*3600 and hivasok[i][7]>8*3600 ,range(len(hivasok))))
beszelok=list(filter(lambda i:  hivasok[i]==max(hivasok[:i+1],key=lambda hivas: hivas[7]) ,munkaidoben))
varakozas=max(0, hivasok[beszelok[-2]][7]-hivasok[beszelok[-1]][3])
              
print(f'Az utolsó telefonáló adatai a(z) {beszelok[-1]+1}. sorban vannak, {varakozas} másodpercig várt.')



print("\n7. feladat\n")

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

def konvertalo(t):
    mp=t%60
    t=t//60
    perc=t%60
    ora=t//60
    return f'{ora:2} {perc:2} {mp:2}'

kezd=konvertalo(8*3600)
for i in beszelok:
    vege=konvertalo(hivasok[i][7])
    kitxt.write(f'{i+1:3} {kezd} {vege}\n')
    kezd=vege
  
kitxt.close()
print("A kiíratás és a szövegfájl lezárása sikeresen befejeződött.")


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