fajl = open('forgalom.txt')
forras = fajl.read().splitlines()
fajl.close()

kartyak = [forras[i].split(' ') for i in range(1,len(forras),2)] #csak a kártyahasználatok listája

#egybe másoljuk az összes kártyahasználatot, így könnyebb kezelni
khaszn = []
for ka in kartyak:
    #print(ka)
    for i in range(0,len(ka),3):
        khaszn.extend(ka[i:i+3])
print(f'2. feladat\n{int(len(khaszn)/3)} lifthasználat volt.')
kset = set([khaszn[i] for i in range(0,len(khaszn),3)])
print(f'\n3. feladat\nA liftet {len(kset)} féle kártyával használták.')

print(f'\n4. feladat')
csakfel =  []
csakle = []
for k in kset:
    #print(k)
    klist = [khaszn[i+1:i+3] for i in range(0,len(khaszn),3) if khaszn[i]==k]
    #csak felfelé: cél - indulás minden esetben pozitív
    #csak lefelé: cél - indulás minden esetben negatív
    utazas = [int(k1[1])-int(k1[0])for k1 in klist]
    fel = 0
    le = 0
    for ut in utazas:
        if ut>0:
            fel += 1
        else:
            le += 1
    if fel==len(utazas):
        csakfel.append(str(k)) #a join()-nak stringek kellenek
    if le==len(utazas):
        csakle.append(str(k))
print('Csak felfelé: '+' '.join(csakfel) if csakfel else 'Csak felfelé: nincs')
print('Csak lefelé: '+' '.join(csakle) if csakle else 'Csak lefelé: nincs')
        
emelet = 0
fel = 0
le = 0
for i in range(0,len(khaszn),3):
    hivas = int(khaszn[i+1])
    cel = int(khaszn[i+2])
    #print(khaszn[i:i+3],hivas,cel)
    if hivas>emelet:
        fel += hivas-emelet
    else:
        le += emelet - hivas
    if cel>hivas:
        fel += cel-hivas
    else:
        le += hivas-cel
    emelet = cel
    #print('fel:',fel,'\tle:',le,'\temelet:',emelet)
print(f'\n5. feladat\nFelfelé ment {fel} emeletet, lefelé {le} emeletet.')

def lakhat(x):
    celok = [khaszn[i+2] for i in range(0,len(khaszn),3) if khaszn[i]==x and khaszn[i+2]!='0']
    setcelok=set(celok)
    legtobb = [0,''] # legtöbb szám, leggyakoribb kártya
    for cel in setcelok:
        if celok.count(cel)>legtobb[0]:
            legtobb[1]=cel
            legtobb[0]=celok.count(cel)
    return legtobb[1]

print('\n6. feladat')
for k in kset:
    l = lakhat(k)
    print('Kártya: '+k+' nem eldönthető.' if not l else 'Kártya: '+k+' leggyakoribb célállomás: '+l)

print('\n7. feladat')
emeletek = [] # emeletek halmaza
for i in range(0,len(khaszn),3):
    emeletek.append(khaszn[i+1])
    emeletek.append(khaszn[i+1])
emeletek = set(emeletek)
jok = [] #jó kártyaszámok
for k in kset:
    celok = [khaszn[i+2] for i in range(0,len(khaszn),3) if khaszn[i]==k]
    if len(set(celok))==len(emeletek):
        jok.append(k)
print('Minden szint célként megjelent:',' '.join(jok))
    
    
