"""
2012. október: Szín-kép
@author Klemand66
"""

print("\n1. feladat\n")

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

betxt = open("kep.txt")

szinek=[]
for sor in betxt:
    szinek.append(sor.strip())

betxt.close()
print("A beolvasás és a szövegfájl lezárása sikeresen befejeződött.\n")

# Szorgalmi feladat: a kép ábrázolása:

def szinjel(kod):
    kodok=["255 0 0","0 255 0","0 0 255","255 255 0","255 0 255","0 255 255","0 0 0","255 255 255"]
    jelek=["R","G","B","Y","M","C","B","W"]
    if kod in kodok:
        aktindex=kodok.index(kod)
        return jelek[aktindex]
    else:
        return "-"

for i,szin in enumerate(szinek):
    print(szinjel(szin),end="")
    if (i+1)%50==0:
        print()
    


print("\n2. feladat\n")

R=input("Kérem egy szín RGB-kódját. A vörös összetevő értéke (0<=R<=255): ")
G=input("A zöld összetevő értéke (0<=G<=255): ")
B=input("A kék összetevő értéke (0<=B<=255): ")

aktszin=f'{R} {G} {B}'

if aktszin in szinek:
    aktindex=szinek.index(aktszin)
    print(f'A megadott {aktszin} RGB-kódú szín megtalálható \
a kép {aktindex//50 +1}. sorának {aktindex%50 +1}. képpontjában. ')
else:
    print(f'A megadott {aktszin} RGB-kódú szín nem található meg a képen.')



print("\n3. feladat\n")

s,o=35,8
aktindex=(s-1)*50 +o-1
aktszin=szinek[aktindex]

aktsor=list(filter(lambda i: i//50+1==s ,range(len(szinek))))
aktszinek=list(map(lambda i: szinek[i] , aktsor))
sdb=aktszinek.count(aktszin)

aktoszlop=list(filter(lambda i: i%50+1==o ,range(len(szinek))))
aktszinek=list(map(lambda i: szinek[i] , aktoszlop))
odb=aktszinek.count(aktszin)

print(f'Sorban: {sdb} Oszlopban: {odb}')



print("\n4. feladat\n")

vdb=szinek.count("255 0 0")
zdb=szinek.count("0 255 0")
kdb=szinek.count("0 0 255")
maxdb=max(vdb,zdb,kdb)

# Ha az összes legtöbbször előforduló színt ki akarom írni:
print("A legtöbbször előforduló színek: ", end="")
if vdb==maxdb:
    print("vörös ",end="")
if zdb==maxdb:
    print("zöld ",end="")
if kdb==maxdb:
    print("kék ",end="")
print()

# Ha csak az egyik legtöbbször előforduló színt akarom kiírni:
print("Az egyik legtöbbször előforduló szín: ", end="")
if vdb==maxdb:
    print("vörös ",end="")
elif zdb==maxdb:
    print("zöld ",end="")
elif kdb==maxdb:
    print("kék ",end="")
print()



print("\n5. feladat\n")

keret=[1,2,3,48,49,50]

for i in range(len(szinek)):
    s,o=i//50+1, i%50+1
    if s in keret or o in keret:
        szinek[i]="0 0 0"

# Szorgalmi feladat: a kép ábrázolása

for i,szin in enumerate(szinek):
    print(szinjel(szin),end="")
    if (i+1)%50==0:
        print()

        

print("\n6. feladat\n")

kitxt = open("keretes.txt","w")

for szin in szinek:
    kitxt.write(f'{szin}\n')

kitxt.close()
print("A kiíratás és a szövegfájl lezárása sikeresen befejeződött.")



print("\n7. feladat\n")

stl=list(filter(lambda i: szinek[i]=="255 255 0" ,range(len(szinek))))

print(f'Kezd: {stl[0]//50+1}, {stl[0]%50+1}')
print(f'Vége: {stl[-1]//50+1}, {stl[-1]%50+1}')
print(f'Képpontok száma: {len(stl)}')


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