2026. június 25., csütörtök

Vasúti hálózat optimalizáció

Ez a feladat az érettségin előforduló mátrix (két-dimenziós lista) és szótár (dictionary) alapú adatelemzést ötvözi. Gyakorolja a fájlbeolvasást, a halmazok (set) használatát, a komplex szűréseket és a logikai összefüggések hatékony leképzését Pythonban.A feladat: Vasúti hálózat optimalizáció
Egy vasúttársaság adatbázisát dolgozzuk fel. Az állomások közötti közvetlen járatok listája. (Formátum: Honnan;Hova;Távolság_km;Menetidő_perc) Az egyes állomásokon történt késések. (Formátum: Állomás;Késés_tartama_perc)
--------------
# Kapott adatokkal futtatható verzió

menetrend = []
kesesek = {}

# Kapott vonatadatok: honnan;hova;tavolsag;ido
vonatok_teszt = [
    "Szeged;Budapest;180;90",
    "Debrecen;Budapest;220;100",
    "Püspökladány;Budapest;160;75",
    "Miskolc;Budapest;190;110",
    "Győr;Budapest;130;70",
    "Pécs;Budapest;210;140",
    "Kecskemét;Szeged;95;55",
    "Szolnok;Püspökladány;85;50",
    "Nyíregyháza;Debrecen;100;45",
    "Eger;Miskolc;75;40"
]

for sor in vonatok_teszt:
    adatok = sor.strip().split(';')
    menetrend.append({
        'honnan': adatok[0],
        'hova': adatok[1],
        'tavolsag': int(adatok[2]),
        'ido': int(adatok[3])
    })

# Kapott késésadatok: állomás;késés
kesesek_teszt = [
    "Budapest;5",
    "Budapest;12",
    "Budapest;7",
    "Szeged;15",
    "Szeged;10",
    "Debrecen;20",
    "Debrecen;25",
    "Miskolc;8",
    "Miskolc;14",
    "Győr;3",
    "Győr;6",
    "Püspökladány;30",
    "Püspökladány;18",
    "Pécs;11"
]

for sor in kesesek_teszt:
    adatok = sor.strip().split(';')
    allomas = adatok[0]
    keses = int(adatok[1])
    if allomas not in kesesek:
        kesesek[allomas] = []
    kesesek[allomas].append(keses)

# A) 120 km/h-nál gyorsabb járatok száma
gyors_jaratok_szama = 0
for ut in menetrend:
    sebesseg = ut['tavolsag'] / (ut['ido'] / 60)
    if sebesseg > 120:
        gyors_jaratok_szama += 1

print(f"A 120 km/h-nál gyorsabb járatok száma: {gyors_jaratok_szama}")

# B) Legnagyobb átlagos késés
legnagyobb_atlag = -1
legrosszabb_allomas = ""

for allomas, keses_lista in kesesek.items():
    atlag = sum(keses_lista) / len(keses_lista)
    if atlag > legnagyobb_atlag:
        legnagyobb_atlag = atlag
        legrosszabb_allomas = allomas

print(f"A legnagyobb átlagos késés ({legnagyobb_atlag:.1f} perc) itt történt: {legrosszabb_allomas}")

# C) Közvetlen járatok Budapestre, Püspökladány érintése nélkül
cel_allomasok = set()
for ut in menetrend:
    if ut['hova'] == 'Budapest' and ut['honnan'] != 'Püspökladány':
        cel_allomasok.add(ut['honnan'])

print("Közvetlen járatok Budapestre (Püspökladány érintése nélkül):")
for indulo in sorted(cel_allomasok):
    print(f"- {indulo}")
-----------------

A 120 km/h-nál gyorsabb járatok száma: 3
A legnagyobb átlagos késés (24.0 perc) itt történt: Püspökladány
Közvetlen járatok Budapestre (Püspökladány érintése nélkül):
- Debrecen
- Győr
- Miskolc
- Pécs
- Szeged
----------
Futtatás; https://onecompiler.com/python#draft-tdxd

Nincsenek megjegyzések:

Megjegyzés küldése