"""
2022. digkult minta: Kongresszus
@author Klemand66
"""

print("\n1. feladat\n")

betxt = open("eloadasok.txt", encoding="utf-8")
# Ügyelni kell az ékezetes forrásfájl kódolására.

ho, eloadasok = "november", []
for sor in betxt:
    d=sor.strip().split("\t")
    nev=d[0] # d[1] mindenütt 11, külön tároljuk a hónap nevét
    nap=int(d[2])
    ssz, hossz, cim, kell, = int(d[3]), int(d[4]), d[5], d[6]
    eloadasok.append([nev, nap, ssz, hossz, cim, kell])
                  #    0    1    2     3     4     5
betxt.close()
print("A beolvasás és a szövegfájl lezárása sikeresen befejeződött.")



print("\n2. feladat\n")

eloadasok.sort(key=lambda e: e[2]) # először a mellékszempont szerint rendezünk
eloadasok.sort(key=lambda e: e[1])

print("  Az előadások időrendben:\n")
for n in range(5,9):
    print(f'  {ho} {n}.:')
    akteloadasok=list(filter(lambda e: e[1]==n ,eloadasok))
    for a in akteloadasok:
        print(f'\t{a[2]}. {a[0]}: {a[4]}')
    print()



print("3. feladat\n")

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

print("  Az előadások vita nélküli összideje:")
for n in range(1,5):
    akteloadasok=list(filter(lambda e: e[1]==n+4 ,eloadasok))
    hosszak=list(map(lambda i: akteloadasok[i][3] ,range(len(akteloadasok))))
    print(f'\t{n}. nap: {konvertalo(sum(hosszak))}')



print("\n4. feladat\n")

akteloadasok=list(filter(lambda e: e[1]==6 ,eloadasok))
leghosszabb=max(akteloadasok, key=lambda e: e[3])
maxhossz=leghosszabb[3]
print(f'  November 6-án a leghosszabb előadás(ok) hossza: {maxhossz} perc.')
leghosszabbak=list(filter(lambda a: a[3]==maxhossz ,akteloadasok))
eloadok=list(map(lambda l: l[0] ,leghosszabbak))
print(f'\tAz előadó(k): {", ".join(eloadok)}')



print("\n5. feladat\n")

print("  Az előadások vége:")
for n in range(5,9):
    akteloadasok=list(filter(lambda e: e[1]==n ,eloadasok))
    hosszak=list(map(lambda i: akteloadasok[i][3] ,range(len(akteloadasok))))
    vege=8*60+sum(hosszak)+len(hosszak)*20
    if vege>12*60:
        vege+=60    
    print(f'\tnovember {n}.: {konvertalo(vege)}')



print("\n6. feladat\n")

akteloadasok=list(filter(lambda e: e[1]==7 ,eloadasok))
ebedido=8*60
for a in akteloadasok:
    ebedido+=a[3]+20
    if ebedido>=12*60:
        print(f'  A harmadik napon {konvertalo(ebedido)}-kor kezdődik az ebédszünet.')
        break



print("\n7. feladat\n")

nevlista, nevdblista = [], []
for e in eloadasok:
    if e[0] in nevlista:
        aktindex=nevlista.index(e[0])
        nevdblista[aktindex]+=1
    else:
        nevlista.append(e[0])
        nevdblista.append(1)

if max(nevdblista)<2:
    print("  Nem találtam egyező neveket.")
else:
    print("  A következő egyező neveket találtam:")
    for i,nev in enumerate(nevlista):
        if nevdblista[i]>1:
            print(f'\t{nev} {nevdblista[i]}')       



print("\n8. feladat\n")

aktnap=int(input(f'Kérem a kongresszus egyik napját (5 <= nap <= 8): ').strip())
sor=input(f'Kérek egy időpontot óra perc alakban (0<= óra <= 23 és 0<= perc <=59, pl. 10 56): ')
darsor=sor.strip().split()
aktido=int(darsor[0])*60 + int(darsor[1])

akteloadasok=list(filter(lambda e: e[1]==aktnap ,eloadasok))
kezd=8*60
programok=["Még nem kezdődött el.", "Előadás", "Vita", "Ebédszünet", "Már véget ért."]
programsavok=[[range(kezd)], [], [], [], []]

for a in akteloadasok:
    vege=kezd+a[3]
    programsavok[1].append(range(kezd,vege))
    programsavok[2].append(range(vege,vege+20))
    kezd=vege+20
    if kezd>=12*60 and len(programsavok[3])==0:
        programsavok[3].append(range(kezd,kezd+60))
        kezd=kezd+60
programsavok[4].append(range(kezd,24*60))

for i,ps in enumerate(programsavok):
    for j in range(len(ps)):
        if aktido in ps[j]:
            aktindex=i
            print(f'  {programok[i]}')



print("\n9. feladat\n")

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

for n in range(5,9):
    kitxt.write(f'  {ho} {n}.\n')
    akteloadasok=list(filter(lambda e: e[1]==n ,eloadasok))
    kezd, ebed = 8*60, False
    for a in akteloadasok:
        vege=kezd+a[3]
        kitxt.write(f'  {konvertalo(kezd)}-{konvertalo(vege)} {a[0]}: {a[4]} ({a[5]})\n')
        kitxt.write(f'  {konvertalo(vege)}-{konvertalo(vege+20)} Vita\n')
        kezd=vege+20
        if kezd>=12*60 and not ebed:
            kitxt.write(f'  {konvertalo(kezd)}-{konvertalo(kezd+60)} Ebéd\n')
            ebed=True
            kezd=kezd+60

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!")
