"""
2023. május: RGB színek
@author Klemand67
"""


print("\n1. feladat\n")

"""
A könnyebb feldolgozás kedvéért a képpontokat nem 640x360-as táblázatban,
hanem sorfolytonos listában tároljuk.
A transzformációk:
sor=index//640 +1, oszlop=index%640 +1
index=(sor-1)*640+(oszlop-1)
"""

betxt = open("kep.txt")

szinek=[]

for sor in betxt:
    darsor=sor.strip().split()
    adatsor=list(map(int,darsor))
    for i in range(0,640*3,3):
        szin=[adatsor[i],adatsor[i+1],adatsor[i+2]]
        szinek.append(szin)
     
betxt.close()
print("A beolvasás és a szövegfájl lezárása sikeresen befejeződött.")



print("\n2. feladat\n")

print("Kérem egy képpont adatait!")
s=int(input("Sor: "))
o=int(input("Oszlop: "))
ind=(s-1)*640+(o-1)
aktszin=szinek[ind]

print(f'A képpont színe RGB({aktszin[0]},{aktszin[1]},{aktszin[2]})')



print("\n3. feladat\n")

# Algoritmussal

vdb=0
for szin in szinek:
    if sum(szin)>600:
        vdb+=1
        
print(f'Algoritmussal: A világos képpontok száma: {vdb} ')    

# Python-függvényekkel

vilagosak=list(filter(lambda szin: sum(szin)>600, szinek))

print(f'\nPython-függvényekkel: A világos képpontok száma: {len(vilagosak)} ')



print("\n4. feladat\n")

osszegek=list(map(sum,szinek))
ls=min(osszegek)

print(f'A legsötétebb pont RGB összege: {ls}')

legsotetebbek=list(filter(lambda szin: sum(szin)==ls, szinek))

print("A legsötétebb pixelek színe:")
for szin in legsotetebbek:
    print(f'RGB({szin[0]},{szin[1]},{szin[2]})')

    

print("\n5. feladat\n")

def hatar(s,d):
    for i in range((s-1)*640,(s-1)*640+360-1):
        if abs(szinek[i+1][2]-szinek[i][2])>d:
            return True
    return False

print(f'Az elkészített függvény:\n\n\
def hatar(s,d):\n\
    for i in range((s-1)*640,(s-1)*640+360-1):\n\
        if abs(szinek[i+1][2]-szinek[i][2])>d:\n\
            return True\n\
    return False')



print("\n6. feladat\n")

felho=list(filter(lambda s: hatar(s,10), range(360)))

print(f'A felhő legfelső sora: {felho[0]}')
print(f'A felhő legalsó sora: {felho[-1]}')


input("\nA befejezéshez nyomd meg az ENTER billentyűt!")
