def kiir(ssz, szoveg):
    print('{}. feladat - {}'.format(ssz, szoveg))


# Az egyszerűbb indexelés miatt egy plusz 0! Ne kelljen -1 mindig! :)
arak = [0, 5000, 4000, 3000, 2000, 1500]

# ---------------------------------------------------------------------------------
# 1. Olvassa be és tárolja el a foglaltsag.txt és a kategoria.txt fájl adatait!
# ---------------------------------------------------------------------------------
kiir(1, 'Adatok beolvasása')

# 15 sor és minden sorban 20 szék
foglaltsag = []
kategoria = []

fv = open('foglaltsag.txt', 'r')
for sor in fv:
    foglaltsag.append(sor.rstrip())
fv.close()

fv = open('kategoria.txt', 'r')
for sor in fv:
    kategoria.append(sor.rstrip())
fv.close()

print(foglaltsag)
print(kategoria)

# ---------------------------------------------------------------------------------
# 2. Kérje be a felhasználótól egy sor, és azon belül egy szék számát, majd írassa
#    ki a képernyőre, hogy az adott hely még szabad-e vagy már foglalt!
# ---------------------------------------------------------------------------------
kiir(2, 'Szabad vagy foglalt')

sor = int(input('Kérek egy sor számát: ')) - 1
szek = int(input('Soron belül egy szék számát: ')) - 1
# -1 kell az indexelés miatt a fenti sorokban
if foglaltsag[sor][szek] == 'x':
    print('A hely már foglalt!')

else:
    print('A hely még szabad!')

# ---------------------------------------------------------------------------------
# 3. Határozza meg, hogy hány jegyet adtak el eddig, és ez a nézőtér befogadó-
#    képességének hány százaléka! A százalékértéket kerekítse egészre, és az
#    eredményt a következő formában írassa ki a képernyőre:
#    Például:
#         Az előadásra eddig 156 jegyet adtak el, ez a nézőtér 42%-a.
# ---------------------------------------------------------------------------------
kiir(3, 'Eladott jegyekről információ')

bk = 15 * 20  # nézőtér befogadóképessége

eladott = 0
for sor in foglaltsag:
    eladott += sor.count('x')

s = 'Az előadásra eddig {} jegyet adtak el, ez a nézőtér {}%-a.'
print(s.format(eladott, int(eladott / bk * 100 + 0.5)))

# ---------------------------------------------------------------------------------
# 4. Határozza meg, hogy melyik árkategóriában adták el a legtöbb jegyet!
#    Az eredményt írassa ki a képernyőre az alábbi formában:
#    Például:
#         A legtöbb jegyet a(z) 3. árkategóriában értékesítették.
# ---------------------------------------------------------------------------------
kiir(4, 'Legnépszerűbb árkategória')
kat = [0] * 6  # 5 kategória van, ebben a listában összegezzük a kategóriákat
# +1 azért kell, hogy az indexelés egyszerűbb legyen
# maguk a kategóriák fogják indexelni

# itt ki lehet használni, hogy a foglaltsag és a kategoria teljesen azonos
# szerkezetű: ha foglaltsag adott helyen x van, ugyanott megnézzük a kategóriát!
for i in range(15):  # 15 sor
    for j in range(20):  # soronként 20 szék
        if foglaltsag[i][j] == 'x':
            kat[int(kategoria[i][j])] += 1

# for x in range(1,6):
#    print(kat[x])

s = 'A legtöbb jegyet a(z) {}. kategóriában adták el.'
print(s.format(kat.index(max(kat))))

# ---------------------------------------------------------------------------------
# 5. A jegyek árát kategóriánként a következő táblázat tartalmazza:
#           árkategória 1    2    3    4    5
#               ár (Ft) 5000 4000 3000 2000 1500
#    Mennyi lenne a színház bevétele a pillanatnyilag eladott jegyek alapján?
#    Írassa ki az eredményt a képernyőre!
# ---------------------------------------------------------------------------------
kiir(5, 'Színház bevétele')

# kicsit hasonló, mint a 4. feladat: foglaltsagon végig megyünk, és ha adott helyen
# x karakter van, akkor ugyanott a kategória alapján megnézzük a szék árát, és
# az egészet összegezzük a bevetel változóban!
bevetel = 0
for i in range(15):  # 15 sor
    for j in range(20):  # soronként 20 szék
        if foglaltsag[i][j] == 'x':
            bevetel += arak[int(kategoria[i][j])]

print('A színház bevétele {} Ft.'.format(bevetel))

# vagy (a 4. feladatot felhasználva):

bevetel2 = 0
for i in range(6):
    bevetel2 += arak[i] * kat[i]

print('A színház bevétele {} Ft.'.format(bevetel2))
# ---------------------------------------------------------------------------------
# 6. Mivel az emberek általában nem egyedül mennek színházba, ha egy üres hely
#    mellett nincs egy másik üres hely is, akkor azt nehezebben lehet értékesíteni.
#    Határozza meg, és írassa ki a képernyőre, hogy hány ilyen „egyedülálló” üres
#    hely van a nézőtéren!
# ---------------------------------------------------------------------------------
kiir(6, '"Egyedülálló" szabad helyek')

ures = 0
for sor in foglaltsag:
    sor2 = 'x' + sor + 'x'  # a plusz 'x'-ek azért, hogy az elejét és végét ne kelljen
    # külön vizsgálgatni
    for i in range(1, 21):  # a plusz 'x'-kel 22 elemű a sor2, és számoljuk az
        # 'xox' eseteket!
        if sor2[i - 1] == 'x' and sor2[i] == 'o' and sor2[i + 1] == 'x':
            ures += 1

print('"Egyedülálló" szabad helyek száma: ', ures)

# ---------------------------------------------------------------------------------
# 7. A színház elektronikus eladási rendszere az érdeklődőknek az üres helyek
#    esetén a hely árkategóriáját jeleníti meg, míg a foglalt helyeket csak egy
#    „x” karakterrel jelzi. Készítse el ennek megfelelően a fenti adatokat
#    tartalmazó szabad.txt fájlt!
#    Például:
#           33xxx1x1x1x1xxx22xxx
#           xxxxxxxxxxxxxxxxxxxx
#           4xxxxx222xxxxxxxxxx4
#           …
# ---------------------------------------------------------------------------------
kiir(7, 'Szabad helyek árkategóriája')

fv = open('szabad.txt', 'w')

szabad = ['x'] * 20  # 20 elemű 'x'-ekből álló lista
szabad = ''.join(szabad)  # ebből 20 karakter hosszú string: 'xxxx....'
szabadok = [szabad] * 15  # ezekből a sztringekből 15 sornak megfelelő lista
for i in range(15):  # 15 sor
    for j in range(20):  # 20 szék soronként
        if foglaltsag[i][j] == 'o':  # ha szabad a szék, akkor
            # az i-edik sorban a j-edik helyen 'x' helyett a kategória lesz!!
            # j-edik karakterig marad minden, j helyen csere, j+1-től marad minden!!
            szabadok[i] = szabadok[i][:j] + kategoria[i][j] + szabadok[i][j + 1:]
fv = open('szabad.txt', 'w')
for szabad in szabadok:
    print(szabad, file=fv)
fv.close()