"""
2022. október digitkult: Virágágyások
@author Klemand66
"""

print("\n1. feladat\n")

betxt = open("felajanlas.txt")

sor=betxt.readline()
db=int(sor.strip()) # az ágyások száma

felajanlasok=[]
for sor in betxt:
    d=sor.strip().split()
    adatsor=[int(d[0]),int(d[1]),d[2]]
         #  0: első  1: utolsó  2: szín
    felajanlasok.append(adatsor)
      
betxt.close()
print("A beolvasás és a szövegfájl lezárása sikeresen befejeződött.")



print("\n2. feladat\n")

print(f'A felajánlások száma: {len(felajanlasok)}')



print("\n3. feladat\n")

mindketton=list(filter(lambda i: felajanlasok[i][0]>felajanlasok[i][1] ,range(len(felajanlasok))))
sorszamlista=list(map(lambda i: str(i+1), mindketton))
print(f'A bejárat mindkét oldalán ültetők:\n{" ".join(sorszamlista)}')



print("\n4. feladat\n")

agyas=int(input(f'Adja meg az ágyás sorszámát (1 <= sorszám <= {db}): ').strip())
aktfelajanlasok=list(filter(lambda f: (f[0] <= agyas <= f[1]) \
                or (f[1]<f[0] and (agyas>=f[0] or agyas<=f[1])),felajanlasok))
print(f'A felajánlók száma: {len(aktfelajanlasok)}')
if len(aktfelajanlasok)>0:
    print(f'A virágágyás színe, ha csak az első ültet: {aktfelajanlasok[0][2]}')
else:
    print("Ezt az ágyást nem ültetik be.")
    
if len(aktfelajanlasok)>0:    
    szinlista=[]
    for a in aktfelajanlasok:
        if a[2] not in szinlista:
            szinlista.append(a[2])      
    print(f'A virágágyás színei: {" ".join(szinlista)}')



print("\n5. feladat\n")

agyasdbk=[]
for i in range(db):
    agyasdbk.append(0)

for f in felajanlasok:
    if f[0]<=f[1]:
        for i in range(f[0],f[1]+1):
            agyasdbk[i]+=1
    if f[0]>f[1]:
        for i in range(f[0],len(f)):
            agyasdbk[i]+=1
        for i in range(f[1]+1):
            agyasdbk[i]+=1

if 0 not in agyasdbk:
    print("Minden ágyás beültetésére van jelentkező.")
elif sum(agyasdbk)>=db:
    print("Átszervezéssel megoldható a beültetés.")
else:
    print("A beültetés nem oldható meg.")
        


print("\n6. feladat\n")

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


szinlista, beultetolista = [], []
for i in range(db):
    szinlista.append("#")
    beultetolista.append(0)
  
for n,f in enumerate(felajanlasok):
    if f[0]<=f[1]:
        for i in range(f[0],f[1]):
            if szinlista[i] == "#":
                szinlista[i]=f[2]
                beultetolista[i]=n+1
    if f[0]>f[1]:
        for i in range(f[0],db):
            if szinlista[i] == "#":
                szinlista[i]=f[2]
                beultetolista[i]=n+1
        for i in range(f[1]):
            if szinlista[i] == "#":
                szinlista[i]=f[2]
                beultetolista[i]=n+1

for i,sz in enumerate(szinlista):
    kitxt.write(f'{sz} {beultetolista[i]}\n')

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


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