fajl = open('csucsok.txt',encoding='utf8')
forras = fajl.read().splitlines()
fajl.close()

print(f'1. feladat\nAz adatfájlban {len(forras)} csúcs van.')

adatok = [sor.split(' ') for sor in forras]
print('\n2. feladat')
nev = input('Kérem egy hegy nevének első betűit: ')
jok = [a for a in adatok if a[0][:len(nev)]==nev]
for jo in jok:
    print(' '.join(jo))

print('\n3. feladat')
nev = input('Kérem egy hegység nevét: ')
jok = [a for a in adatok if a[2]==nev]
if not jok:
    print('A hegység nem szerepel az adatbázisban.')
else:
    for jo in jok:
        jo[1]=int(jo[1])
    jok.sort(key=lambda e:e[1], reverse=True)
    print(f'A legmagasabb csúcs neve {jok[0][0]}, magassága {jok[0][1]} méter.')

print('\n4. feladat')
hegysegek = set([adat[2] for adat in adatok])
hegysegek = list(hegysegek)
hegysegek.sort()
for h in hegysegek:
    csucsok = [a for a in adatok if int(a[1])>700 and a[2]==h]
    print(f'{h} {len(csucsok)}')

from math import sin, cos, sqrt, atan2, radians
def tav(e1,k1,e2,k2): #e:északi szélesség, k:keleti hosszúság
    R = 6371.0
    esz1 = radians(e1)
    kh1 = radians(k1)
    esz2 = radians(e2)
    kh2=radians(k2)
    dkh = kh2-kh1
    desz = esz2-esz1
    a = (sin(desz/2))**2 + cos(esz1) * cos(esz2) * (sin(dkh/2))**2
    c = 2 * atan2(sqrt(a), sqrt(1-a))
    return R * c

print('\n5. feladat')
nev = input('Kérem egy hegycsúcs nevét: ')
adat = [a for a in adatok if a[0]==nev][0]
esz = float(adat[3].split(',')[0]+'.'+adat[3].split(',')[1])
kh = float(adat[4].split(',')[0]+'.'+adat[4].split(',')[1])
print(f'{nev} távolsága a Gellért-hegytől {round(tav(esz,kh,47.4837362,19.037055),2)} km.')

print('\n6. feladat')
maxtav = ['','','','',0] #csúcsnév1,hegységnév1,csúcsnév2,hegységnév2,távolság
for i1 in range(len(adatok)-1):
    adat1 = adatok[i1]
    esz1 = float(adat1[3].split(',')[0]+'.'+adat1[3].split(',')[1])
    kh1 = float(adat1[4].split(',')[0]+'.'+adat1[4].split(',')[1])
    for i2 in range(i1+1,len(adatok)):
        adat2 = adatok[i2]
        esz2 = float(adat2[3].split(',')[0]+'.'+adat2[3].split(',')[1])
        kh2 = float(adat2[4].split(',')[0]+'.'+adat2[4].split(',')[1])
        tav1 = tav(esz1,kh1,esz2,kh2)
        if tav1>maxtav[4]:
            maxtav = [adat1[0],adat1[2],adat2[0],adat2[2],tav1]
            #print(tav1,adat1,adat2,maxtav)
print(f'A két legtávolabbi csúcs: {maxtav[0]} ({maxtav[1]}) és {maxtav[2]} ({maxtav[3]}), távolságuk {round(maxtav[4],2)} km.')
