import random


class Dobas:
    def __init__(self, ertek=None):
        if ertek is None:
            ertek = random.choice('FI')
        self.ertek = ertek

    def __str__(self):
        return self.ertek

    def __eq__(self, other):
        return self.ertek == other.ertek


class Negyes:
    # az ertek egy negy Dobas objektumbol allo lista
    def __init__(self, ertek=None):
        if ertek is None:
            ertek = [Dobas(), Dobas(), Dobas(), Dobas()]
        self.ertek = ertek

    def __eq__(self, other):
        return self.ertek == other.ertek

    def __str__(self):
        sz = ''
        for i in self.ertek:
            sz += i.ertek
        return sz


class Sorozat:
    def __init__(self, ertekek=None):
        if ertekek is None:
            ertekek = []
            for i in range(1000):
                ertekek.append(Negyes())
        self.ertekek = ertekek

    def FFF(self) -> dict:
        """harom fejjel kezdodo sorozatok szama"""
        stat = {'FFFF': self.ertekek.count(Negyes([Dobas('F'), Dobas('F'), Dobas('F'), Dobas('F')])),
                'FFFI': self.ertekek.count(Negyes([Dobas('F'), Dobas('F'), Dobas('F'), Dobas('I')]))}
        return stat

    def FFF_kiir(self) -> str:
        """7. feladat kiirasa"""
        sz = 'FFFF: ' + str(self.FFF()['FFFF']) + ' FFFI: ' + str(self.FFF()['FFFI']) + '\n'
        for negyes in self.ertekek:
            sz += str(negyes) + ' '
        return sz


class Fajl:
    """Fajlmuveletek osztalya"""

    def __init__(self, fnev):
        self.fnev = fnev

    def statisztika(self) -> dict:
        """statisztikai adatok 3-6. feladathoz"""
        stat = {}
        db = 0  # 3. feladat
        fejdb = 0  # 4. feladathoz
        szamlalo, dbff = 0, 0  # 5. feladat
        i, index, hossz = 1, 1, 0  # 6. feladathoz
        be = open("kiserlet.txt")
        for sor in be.readlines():
            dob = sor.strip()
            db += 1  # 3. feladat
            # 4. feladat:
            if Dobas(dob) == Dobas('F'):
                fejdb += 1  # 4. feladathoz
                szamlalo += 1  # 5. feladathoz
            # 5. feladat
            else:
                if szamlalo == 2:
                    dbff += 1
                # 6. feladat
                if szamlalo > hossz:
                    hossz = szamlalo
                    index = i
                szamlalo = 0
            i += 1
        if szamlalo == 2:  # ha a fájl FF-re végződik, 5. feladat
            dbff += 1
        # 6. feladat
        kezdet = index - hossz
        if szamlalo > hossz:  # ha a fájl F-re végződik
            hossz = szamlalo
            kezdet = db - hossz + 1
        # statisztika változói:
        stat['db'] = db
        stat['fejdb'] = fejdb
        stat['dbff'] = dbff
        stat['hossz'] = hossz
        stat['kezdet'] = kezdet
        be.close()
        return stat

    def statisztika_kiir(self) -> str:
        """statisztika kiir"""
        stat = self.statisztika()
        return '3. feladat\nA kisérlet ' + str(stat['db']) + 'dobásból állt.\n' \
                                                             '4. feladat\nA kisérlet során a fej gyakorisága {:.2f}% ' \
                                                             'volt.'.format(
            stat['fejdb'] * 100 / stat['db']) + '\n' \
                                                '5. feladat\nA kisérlet során ' + str(
            stat['dbff']) + ' alkalommal dobtak pontosan két fejet egymás után.\n' \
                            '6. feladat\nA leghosszabb tisztafej sorozat ' + str(
            stat['hossz']) + ' tagból áll. Kezdete a(z) ' + str(stat['kezdet']) + '. dobás.'

    def kiir(self, adatok):
        """fajlba iras"""
        f = open(self.fnev, 'w', encoding='utf-8')
        print(adatok, end='', file=f)
        f.close()


# 1. feladat
print("1. feladat\nA pénzfeldobás eredménye:", Dobas())

# 2. feladat
tipp = Dobas(input("2. feladat\nTippeljen (F/I): ").upper())
dobas = Dobas()
print("A tipp", tipp, "a dobás", dobas, "volt.")
print(['Ön nem találta el.', 'Ön eltalálta.'][tipp == dobas])

# 3 - 6. feladat
fajl = Fajl('kiserlet')
print(fajl.statisztika_kiir())

# 7. feladat
sorozat = Sorozat()
fajl = Fajl('dobasokOOP.txt')
fajl.kiir(sorozat.FFF_kiir())
print("7. feladat\nA fálbaírás kész.")
