class Huzas:
    """egy hét számait feldolgozó osztály"""

    def __init__(self, x):
        self.szamok = x

    def __str__(self):
        """növekvő sorrendben, szóközzel elválasztva írja ki"""
        return ' '.join(sorted(self.szamok, key=lambda s: int(s)))

    def sorbarendez(self):
        """a számokat növekvő sorrendbe rendezi"""
        return sorted(self.szamok, key=lambda s: int(s))


class Statisztika:
    """a kihúzott számokat feldolgozó osztály"""

    def __init__(self):
        self.szamok = []

    def __str__(self):
        ki = ''
        i = 1
        for sz in self.szamok:
            ki += sz + ' '
            if i % 5 == 0:
                ki += '\n'
            i += 1
        return ki

    def feltolt(self, egyhet):
        """Az osztály eleméhez hozzá ad egy hét számai"""
        if type(egyhet) == str:
            egyhet = egyhet.split()
        return self.szamok.extend(egyhet)

    def hianyzo(self):
        """Nem kihúzott számok"""
        return [str(i) for i in range(1, 91) if str(i) not in self.szamok]

    def paratlan(self):
        """páratlan számok számát adja"""
        return sum([1 for s in self.szamok if int(s) % 2 == 1])

    def gyakorisag(self):
        """számok gyakoriságát adja"""
        return [self.szamok.count(str(i)) for i in range(1, 91)]

    def gyakorisag_kiir(self):
        """A kihúzott számok gyakoriságát táblázatként adja vissza"""
        szoveg = ''
        i = 1
        for db in self.gyakorisag():
            szoveg += str(db) + ' '
            if i % 15 == 0:
                szoveg += '\n'
            i += 1
        return szoveg


# 1. feladat
szamok52 = input("1. feladat\nAdja meg az 52. hét számait: ").split()
huzas52 = Huzas(szamok52)
print(huzas52)

# 2. feladat
open("lottosz.dat")
be = open("lottosz.dat")
szamok = [sor.split() for sor in be.readlines()]

# 3. feladat
het = int(input("3-4. feladat:\nAdjon meg egy egész számot 1 és 51 között: "))
huzas = Huzas(szamok[het - 1])
print("A " + str(het) + ". hét nyerőszámai:", huzas)

# 5. feladat
stat = Statisztika()
for egyhet in szamok:
    stat.feltolt(egyhet)
print("5. feladat\nVolt-e olyan szám, amit egyszer sem húztak ki?", ['Nem', 'Igen'][len(stat.hianyzo()) > 1])

# 6. feladat
print("6. feladat\nPáratlan számok száma:", stat.paratlan())

# 7. feladat
stat.feltolt(huzas52.sorbarendez())
ki = open('lotto52.ki', 'w')
print(stat, file=ki)
ki.close()

# 8. feladat
print("8. Feladat\nA kihúzott számok gyakorisága:")
print(stat.gyakorisag_kiir())

# 9. feladat
primek = (2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
          73, 79, 83, 89)
print("9. feladat\nAzok a prímszámok, amelyeket még nem húztak ki:")
for p in primek:
    if str(p) in stat.hianyzo():
        print(p, end=' ')
