sebesseghatarok = []
egesztav = 0

with open("ut.txt", "r", encoding="utf-8") as forrasfajl:
    for sor in forrasfajl:
        if egesztav != 0:
            ujsor = sor.strip().split()
            sebesseghatarok.append(ujsor)
        else:
            egesztav += int(sor)

#2.feladat
print("2.feladat")

for telepules in sebesseghatarok:
    if telepules[1][0:5] == "Varos":
        print(telepules[1])

#3.feladat
print("3.feladat")

tav = float(input("Adja meg a vizsgált szakasz hosszát km-ben! "))

min_seb = 90

for sebesseg in sebesseghatarok:
    if int(sebesseg[0]) / 1000 <= tav:
        if sebesseg[1] != "#"  and sebesseg[1] != "%" and sebesseg[1] != "]" and sebesseg[1][0:5] != "Varos":
            if int(sebesseg[1]) < min_seb:
                min_seb = int(sebesseg[1])
        if sebesseg[1][0:5] == "Varos" and min_seb > 50:
            min_seb = 50
    else:
        break

print(f"Az első {tav} km-en {min_seb} km/h volt a legalacsonyabb megengedett sebesség.")

#4.feladat
print("4.feladat")

telep_tav = 0
for i,telepules in enumerate(sebesseghatarok):
    if telepules[1][0:5] == "Varos":
        kezdet = i
    if telepules[1] == "]":
        veg = i
        telep_tav += int(sebesseghatarok[veg][0]) - int(sebesseghatarok[kezdet][0])

print(f"Az út {round(telep_tav/egesztav * 100,2)} százaléka vezet településen belül.")


#5.feladat
print("5.feladat")

varos = input("Adja meg egy település nevét! ")

talalt = False

for i, telepules in enumerate(sebesseghatarok):
    if telepules[1] == varos:
        kezd = i
        talalt = True
    if talalt:    
        if telepules[1] == "]" and i > kezd:
            vege = i
            break

tablak = 0
for k in range(kezd+1,vege):
    if sebesseghatarok[k][1] != "#" and sebesseghatarok[k][1] != "%":
        tablak += 1

print(f"A sebességkorlátozó táblák száma: {tablak}")
print(f"Az út hossza a településen belül {int(sebesseghatarok[vege][0])-int(sebesseghatarok[kezd][0])} méter")

#6.feladat
print("6.feladat")

varosokid = []
for i, telepules in enumerate(sebesseghatarok):
    if telepules[1][0:5] == "Varos":
        varosokid.append(i)

elozo_varosid = varosokid[varosokid.index(kezd)-1]

for l in range (elozo_varosid,kezd): 
        if sebesseghatarok[l][1] == "]":
            elotte_szomszed = int(sebesseghatarok[kezd][0]) - int(sebesseghatarok[l][0])

if varosokid.index(kezd) < len(varosokid) - 1: 
    utana_varosid = varosokid[varosokid.index(kezd)+1]
    utana_szomszed = int(sebesseghatarok[utana_varosid][0]) - int(sebesseghatarok[vege][0])

else:
    utana_szomszed = egesztav
 
if varosokid.index(kezd) == 0 or elotte_szomszed > utana_szomszed:
    print(f"A legközelebbi település: {sebesseghatarok[utana_varosid][1]}")
elif varosokid.index(kezd) == len(varosokid) - 1 or elotte_szomszed <= utana_szomszed:
    print(f"A legközelebbi település: {sebesseghatarok[elozo_varosid][1]}")