ut_hossza = 0
ut_adatok = []

UT = 0
EGYEB_ADAT = 1

def adatBeolvasas_1() -> int:
    ut_hossza_return = 0
    with open("ut.txt", "r") as f:
        for index, adat in enumerate(f):
            if index == 0:
                ut_hossza_return = int(adat)
            else:
                ut_adatok.append(adat.split())
    return ut_hossza_return

def telepulesekListazasa_2():
    print("2. feladat")
    for adat in ut_adatok:
        if len(adat[EGYEB_ADAT]) >= 4:
            print(adat[EGYEB_ADAT])

def felhazsnalo_input_3():
    print("3. feladat")
    input_km = float(input("Adja meg a vizsgált szakasz hosszát km-ben! "))
    legalacsonyabb_seb = None
    for adat in ut_adatok:
        aktualis_km = int(adat[UT]) / 1000
        if aktualis_km <= input_km:
            if len(adat[EGYEB_ADAT]) >= 4:
                if legalacsonyabb_seb > 50 or legalacsonyabb_seb is None:
                    legalacsonyabb_seb = 50
            elif len(adat[EGYEB_ADAT]) == 2:
                if legalacsonyabb_seb is None:
                    legalacsonyabb_seb = int(adat[EGYEB_ADAT])
                elif legalacsonyabb_seb > int(adat[EGYEB_ADAT]):
                    legalacsonyabb_seb = int(adat[EGYEB_ADAT])
    print(f"Az első {input_km} km-en {legalacsonyabb_seb} km/h volt a legalacsonyabb megengedett sebesség.")
            
def ut_szazalek_telepules_4(ut_hossza: int):
    telepules = 0
    telepules_kezdet = 0
    for adat in ut_adatok:
        if len(adat[EGYEB_ADAT]) >= 4:
            telepules_kezdet = int(adat[UT])
        elif adat[EGYEB_ADAT] == "]":
            telepules += (int(adat[UT]) - telepules_kezdet)
    print("4. feladat")
    szazalek = str((telepules / ut_hossza) * 100)[:5]
    print(f"Az út {szazalek} százaléka vezet a településen belül.")

def telepulesen_beluli_adatok_5() -> str:
    print("5. feladat")
    varos_input = input("Adja meg egy település nevét! ")
    seb_korlatozasok = 0
    ut_hosszusaga = 0
    kezdet = 0
    for adat in ut_adatok:
        if adat[EGYEB_ADAT] == varos_input:
            kezdet = int(adat[UT])
        elif kezdet != 0:
            if adat[EGYEB_ADAT] == "%":
                seb_korlatozasok += 1
            elif adat[EGYEB_ADAT] == "]":
                ut_hosszusaga = int(adat[UT]) - kezdet
                break
    print(f"A sebesség korlátzó táblák száma: {seb_korlatozasok}")
    print(f"Az út hossza a településen belül {ut_hosszusaga} méter.")
    return varos_input

def legkozelebb_eso_telepules_6(telepules: str):
    print("6. feladat")
    megtalalta_telepulest = False
    for adat in ut_adatok:
        if len(adat[EGYEB_ADAT]) >= 4:
            if adat[EGYEB_ADAT] == telepules:
                megtalalta_telepulest = True
            elif megtalalta_telepulest:
                print(f"A legközelebbi település: {adat[EGYEB_ADAT]}")
                break

ut_hossza = adatBeolvasas_1()
telepulesekListazasa_2()
felhazsnalo_input_3()
ut_szazalek_telepules_4(ut_hossza=ut_hossza)
varos_input = telepulesen_beluli_adatok_5()
legkozelebb_eso_telepules_6(varos_input)