# --------------------------------------------------------------------------------
# 1. Olvassa be a szallit.txt állomány adatait, és annak felhasználásával oldja
#    meg a következő feladatokat!
# --------------------------------------------------------------------------------
def F1():
    fbe=open('szallit.txt','r')
    elsosor=fbe.readline().strip().split()
    elsosor=list(map(int,elsosor))
    global hossz,ido        # szalag hossza és egységnyi távolság megtételéhez
                            # szükséges idő
    hossz=elsosor[0]
    ido=elsosor[1]
    for sor in fbe:
        rekeszek.append(list(map(int,sor.strip().split())))
    fbe.close()
    print(rekeszek)
# --------------------------------------------------------------------------------
# 2. Kérje be egy szállítás sorszámát, majd írassa ki annak indulási és cél-
#    helyét! (A szállításokat 1-től sorszámozzuk.)
# --------------------------------------------------------------------------------
def F2():
    print('2. feladat')
    sorszam=int(input('Adja meg, melyik adatsorra kíváncsi! '))
    index=sorszam-1
    rekesz=rekeszek[index]
    # röviden:
    #    rekesz=rekeszek[int(input('Adja meg, melyik adatsorra kíváncsi! '))-1]

    print(f'Honnan: {rekesz[1]} Hova: {rekesz[2]}')
# --------------------------------------------------------------------------------
# 3. Készítsen függvényt tav néven, amely megadja a szállítás távolságát a
#    szalag hosszának, valamint az indulási és a célhelynek ismeretében!
#    A függvényt használja fel a későbbi feladatok megoldása során. A függvény-
#    fejet az alábbiaknak megfelelően készítse el, megoldásában az ott szereplő
#    változóneveket használja!
#    Függvény tav(szalaghossz, indulashelye, erkezeshelye : egész szám):egész szám
# --------------------------------------------------------------------------------
def tav(szalaghossz,indulashelye,erkezeshelye):
    if indulashelye<erkezeshelye:
        return erkezeshelye-indulashelye
    else:
        return szalaghossz-indulashelye+erkezeshelye
# --------------------------------------------------------------------------------
# 4. Határozza meg, hogy a rendelkezésre álló szállítások során mekkora volt a
#    legnagyobb szállítási távolság! Írja a képernyőre a maximális távolságot és
#    az összes ilyen hosszúságú szállítás sorszámát!
# --------------------------------------------------------------------------------
def F4():
    print('4. feladat')
    # "klasszikus" megoldás ************************************************
    maxtav=0
    for rekesz in rekeszek:
        tavolsag=tav(hossz,rekesz[1],rekesz[2])
        if tavolsag>maxtav:
            maxtav=tavolsag
    print(f'A legnagyobb távolság: {maxtav}')
    # sorszámok:
    print('A maximális távolságú szállítások sorszáma:',end=' ')
    for sorszam,rekesz in enumerate(rekeszek,start=1):
        if tav(hossz,rekesz[1],rekesz[2])==maxtav:
            print(sorszam,end=' ')
    print()     # soremelés

    # "pythonos" megoldás **************************************************
    tavok=[tav(hossz,rekesz[1],rekesz[2]) for rekesz in rekeszek]
    print(f'A legnagyobb távolság: {max(tavok)}')
    print('A maximális távolságú szállítások sorszáma:',end=' ')
    [print(sorszam,end=' ') for sorszam in [sorszam for sorszam,rekesz in \
           enumerate(rekeszek,start=1) if tav(hossz,rekesz[1],rekesz[2])==maxtav]]
    print()
    # Megjegyzés: a 67. sor végi \ technikai soremelés, nem "igazi", csak azért
    # van, hogy egyben legyen látható a parancs, ne kelljen jobbra görgetni ...
# --------------------------------------------------------------------------------
# 5. Adja meg, mekkora tömeg haladt el összesen a 0 pozíciójú hely előtt! Az onnan
#    induló vagy oda érkező rekeszeket ne vegye figyelembe!
# --------------------------------------------------------------------------------
def F5():
    print('5. feladat')
    # "klasszikus" megoldás ************************************************
    ossztomeg=0
    for rekesz in rekeszek:
        feltetel_1=rekesz[1]>rekesz[2]
        feltetel_2=(0 not in [rekesz[1],rekesz[2]] and 200 not in [rekesz[1],rekesz[2]])
        if feltetel_1 and feltetel_2:
            ossztomeg+=rekesz[3]
    print(f'A kezdőpont előtt elhaladó rekeszek össztömege: {ossztomeg}')

    # "pythonos" megoldás **************************************************
    ossztomeg=sum([rekesz[3] for rekesz in rekeszek if rekesz[1]>rekesz[2] and \
              0 not in [rekesz[1],rekesz[2]] and 200 not in [rekesz[1],rekesz[2]]])
    print(f'A kezdőpont előtt elhaladó rekeszek össztömege: {ossztomeg}')
# --------------------------------------------------------------------------------
# 6. Kérjen be egy időpontot, és határozza meg az adott időpontban szállított
#    rekeszek sorszámát! Az éppen akkor induló rekeszeket vegye figyelembe, de a
#    célba érőket ne! Ha nem volt szállított rekesz, akkor a rekeszek sorszáma
#    helyett az „üres” szót írja ki!
# --------------------------------------------------------------------------------
def F6():
    print('6. feladat')
    idopont=int(input('Adja meg a kívánt időpontot! '))
    print('A szállított rekeszek halmaza:',end=' ')
    van=False
    for sorszam,rekesz in enumerate(rekeszek,start=1):
        indul=rekesz[0]
        erkezik=indul+tav(hossz,rekesz[1],rekesz[2])*ido    # lsd. 9. sor
        if indul<=idopont<erkezik:
            print(sorszam,end=' ')
            if van==False:
                van=True
    if not van:
        print('üres',end=' ')
    print()
# --------------------------------------------------------------------------------
# 7. Hozza létre a tomeg.txt fájlt, amely megadja, hogy az egyes helyekről
#    összességében mennyi tömeget szállítottak el! Azok a helyek ne jelenjenek meg
#    a fájlban, ahonnan nem történt szállítás!
#    (A fájlba írt adatok sorrendje tetszőleges.)
# --------------------------------------------------------------------------------
def F7():
    fki=open('tomeg.txt','w')
    helyek=dict()
    for hely in range(1,201):      # szótár: minden lehetséges hely kulcs
        helyek[hely]=0
    for rekesz in rekeszek:
        helyek[rekesz[1]]+=rekesz[3]
    [print(hely,tomeg,file=fki) for hely,tomeg in helyek.items() if helyek[hely]>0]
    fki.close()
    
# ------------------------------------------------------------------------ FŐMODUL
rekeszek=[]
F1()
F2()
F4()
F5()
F6()
F7()
