#GPC - 2017
#Gera chaves de euromilhões
#com certas imposições
import numpy as np
from random import randint
import winsound
Freq = 880 # Set Frequency To 2500 Hertz
Dur = 1 # Set Duration To 1000 ms == 1 second
winsound.Beep(700,65)
quantas = int(input("Quantas chaves?"))
contagem = 1
ficheiro = open("C:\Python34\chaves.txt", "w")
while(contagem <= quantas):
    mylist=np.random.choice([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,
                             30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50], 5,
                            replace=False,p=[0.02702702702702703, 0.016216216216216217, 0.021621621621621623,
                                             0.016216216216216217, 0.02702702702702703, 0.016216216216216217,
                                             0.016216216216216217, 0.016216216216216217, 0.03783783783783784,
                                             0.032432432432432434, 0.005405405405405406, 0.016216216216216217,
                                             0.02702702702702703, 0.032432432432432434, 0.02702702702702703,
                                             0.016216216216216217, 0.016216216216216217, 0.0162162162162,
                                             0.02702702702702703, 0.005405405405405406, 0.016216216216216217,
                                             0.010810810810810811, 0.03783783783783784, 0.016216216216216217,
                                             0.021621621621621623, 0.02702702702702703, 0.021621621621621623,
                                             0.02702702702702703, 0.005405405405405406, 0.021621621621621623,
                                             0.016216216216216217, 0.043243243243243246, 0.005405405405405406,
                                             0.02702702702702703, 0, 0.016216216216216217, 0.032432432432432434,
                                             0.02702702702702703, 0.005405405405405406, 0.032432432432432434,
                                             0.010810810810810811, 0.02702702702702703, 0.03783783783783784,
                                             0.005405405405405406, 0.010810810810810811,0.016216216216216217,
                                             0.005405405405405406, 0.016216216216216217, 0.032432432432432434,
                                             0.010810810810810811])
       # [i = randint(1,50) for i in range(5)] # bah
    mylist = list(set(mylist))
    mylist.sort()
    mylist2 = [j for j in range (1,3)]
    mylist2[0] = randint(1,11)
    mylist2[1] = randint(1,11)
    mylist2 = list(set(mylist2))
    mylist2.sort()
    if len(mylist) !=5:
        continue
    elif len(mylist2) != 2:
        continue
#5555555555555555555555555555555555555555555555
 #   CONDIÇÔES
    amplitude = mylist[4] - mylist[0]
    if amplitude > 37 or amplitude < 22:
        continue
        # 4444444444444444444444444444444#4444444444444444444444444444444
    dezenas = 0
    for i in mylist:
        if i%10 == 0:
            dezenas = dezenas +1
    if dezenas > 2:
        continue
# 4444444444444444444444444444444#4444444444444444444444444444444
    pares = 0
    for i in mylist:
        if i % 2 == 0:
            pares = pares +1
    if pares > 3:
        continue
# 4444444444444444444444444444444#4444444444444444444444444444444
    impares = 0
    for i in mylist:
        if i % 2 != 0:
            impares = impares + 1
    if impares > 3:
        continue
        # 4444444444444444444444444444444#4444444444444444444444444444444
    fibonnaci = [1,2,3,5,8] # uma estrela
    primes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47] #pelo menos 1 primo
    quantos_fibonnaci = len(set(fibonnaci) & set(mylist2))
    quantos_primos = len(set(primes) & set (mylist))
    if quantos_fibonnaci != 1:
        continue
    if quantos_primos == 0:
        continue
        # 4444444444444444444444444444444#4444444444444444444444444444444
    if mylist[4] < 32:
        continue
    if mylist [0] > 23:
        continue
        # 4444444444444444444444444444444#4444444444444444444444444444444
                    #fazer não: omissos mais do que 3
# 4444444444444444444444444444444#4444444444444444444444444444444
    print("")
    print("Chave n.º:", contagem, mylist,mylist2, end=" ")
    
    #print ("amplitude =",amplitude)
    contagem = contagem + 1
    numeros=str(mylist)
    estrelas=str(mylist2)
    ficheiro.write("Chave n.º" + str(contagem-1) + ":" + numeros + estrelas + " \n")
    continue
ficheiro.close()
import subprocess
subprocess.Popen('notepad "C:\Python34\chaves.txt"')
winsound.Beep(700,65)
print()
print("I'm done, Sir")