"""
2020. május idegennyelvű: Menetrend
@author Klemand66
"""

print("\n1. feladat\n")

betxt = open("vonat.txt")

vonatok=[]
for sor in betxt:
    darsor=sor.strip().split()
    adatsor=[int(darsor[0]),int(darsor[1]),int(darsor[2])*60+int(darsor[3]),darsor[4]]
           # 0: vonat       1: állomás     2: idő percben                   3: E/I
    vonatok.append(adatsor)
      
betxt.close()
print("A beolvasás és a szövegfájl lezárása sikeresen befejeződött.")



print("\n2. feladat\n")

allomasdb, vonatdb = vonatok[-1][1]+1, vonatok[-1][0]
print(f'Az állomások száma: {allomasdb}') # a kiinduló állomás a 0
print(f'A vonatok száma: {vonatdb}')      # az első vonat az 1



print("\n3. feladat\n")

maxallasok=[]
for i in range(1,vonatdb+1):
    ind=list(filter(lambda v: v[0]==i and v[3]=="I" ,vonatok))
    erk=list(filter(lambda v: v[0]==i and v[3]=="E" ,vonatok))
    maxi=max(range(1,len(ind)), key=lambda j: ind[j][2]-erk[j-1][2])
    maxallasok.append([i, maxi, ind[maxi][2]-erk[maxi-1][2]])

maxallas=max(maxallasok, key=lambda m: m[2])

print(f'A legtöbbet álló vonat: \
a(z) {maxallas[0]}. vonat a(z) {maxallas[1]}. állomáson {maxallas[2]} percet állt.')


                      
print("\n4. feladat\n")

vaz=int(input(f'Kérem egy vonat azonosítóját (0 <= azonosító <= 20): '))
darido=input(f'Adjon meg egy időpontot óra perc alakban: ').strip().split()
aktido = int(darido[0])*60 + int(darido[1])
                               


print("\n5. feladat\n")

aktvonatok=list(filter(lambda v: v[0]==vaz ,vonatok))                             
menetido=2*60+22                               
aktmenetido=aktvonatok[-1][2] - aktvonatok[0][2]
elteres=aktmenetido-menetido

if elteres<0:
    print(f'A(z) {vaz}. vonat útja {abs(elteres)} perccel rövidebb volt az előírtnál.')
elif elteres==0:
    print(f'A(z) {vaz}. vonat útja pontosan az előírt ideig tartott.')
else:
    print(f'A(z) {vaz}. vonat útja {elteres} perccel hosszabb volt az előírtnál.')

    

print("\n6. feladat\n")

kitxt = open(f'halad{vaz}.txt',"w")

akterkezesek=list(filter(lambda v: v[0]==vaz and v[3]=="E" ,vonatok))

for v in akterkezesek:
    kitxt.write(f'{v[1]:2}. állomás: {v[2]//60:02}:{v[2]%60:02}\n')

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



print("\n7. feladat\n")

for i in range(1,vonatdb+1):
    ind=list(filter(lambda v: v[0]==i and v[3]=="I" and aktido>=v[2] ,vonatok))
    erk=list(filter(lambda v: v[0]==i and v[3]=="E" and aktido>=v[2] ,vonatok))
    if len(ind)>0 and len(erk)<10: # ha úton volt
        if len(ind)==len(erk):
            print(f'A(z) {i}. vonat a {len(erk)}. állomáson állt.')
        else:
            print(f'A(z) {i}. vonat a {len(ind)-1}. és a {len(ind)}. állomás között járt.')
            

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