File size: 3,719 Bytes
f998e76
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
380949d
f998e76
 
380949d
f998e76
 
 
 
380949d
 
 
 
 
 
 
 
 
f998e76
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
380949d
f998e76
380949d
f998e76
 
 
 
380949d
f998e76
 
 
 
341c786
380949d
f998e76
 
 
 
 
 
 
 
 
 
380949d
f998e76
 
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import random
import gradio as gr

def obter_ultimo_sorteio(input_numeros):
    """
    Recebe os números do último sorteio fornecidos pelo usuário.
    """
    try:
        numeros = [int(x.strip()) for x in input_numeros.split(',') if x.strip().isdigit()]
        if len(numeros) == 6 and all(1 <= n <= 60 for n in numeros):
            return numeros
        else:
            raise ValueError("Informe exatamente 6 números entre 1 e 60, separados por vírgula.")
    except Exception as e:
        return str(e)

def gerar_palpites(ultimo_sorteio, quantidade_numeros, quantidade_palpites, logica=None):
    """
    Gera palpites para a Mega-Sena com base na lógica escolhida.
    Se a lógica não for informada, a lógica automática será aplicada.
    """
    palpites = []
    todos_os_numeros = list(range(1, 61))

    # Lógica automática: Escolher lógica com base em quantidade de palpites e números por palpite
    if logica is None:
        if quantidade_palpites > 5:
            logica = 3  # Lógica 3: Distribuição alternada se houver muitos palpites
        elif quantidade_numeros > 6:
            logica = 2  # Lógica 2: Combina frequentes e atrasados se a quantidade de números for maior
        else:
            logica = 1  # Lógica 1: Priorizar números frequentes

    for _ in range(quantidade_palpites):
        if logica == 1:  # Lógica 1: Priorizar números frequentes
            mais_frequentes = [n for n in ultimo_sorteio[:3]]
            restantes = [n for n in todos_os_numeros if n not in mais_frequentes]
            palpite = random.sample(mais_frequentes, min(len(mais_frequentes), quantidade_numeros)) + \
                      random.sample(restantes, quantidade_numeros - len(mais_frequentes))

        elif logica == 2:  # Lógica 2: Combinar frequentes e atrasados
            frequentes = ultimo_sorteio[:3]
            atrasados = [n for n in todos_os_numeros if n not in ultimo_sorteio]
            palpite = random.sample(frequentes, 3) + random.sample(atrasados, quantidade_numeros - 3)

        elif logica == 3:  # Lógica 3: Distribuição alternada
            faixas = [(1, 10), (11, 20), (21, 30), (31, 40), (41, 50), (51, 60)]
            palpite = [random.randint(*faixa) for faixa in faixas]
            random.shuffle(palpite)
            palpite = palpite[:quantidade_numeros]

        else:
            return "Lógica inválida. Escolha entre 1, 2 ou 3."

        palpites.append(sorted(palpite))

    return palpites

def interface(ultimo_sorteio, quantidade_numeros, quantidade_palpites):
    """
    Função que integra as partes do programa e retorna os palpites gerados com lógica automática.
    """
    numeros = obter_ultimo_sorteio(ultimo_sorteio)
    if isinstance(numeros, str):
        return numeros  # Mensagem de erro
    palpites = gerar_palpites(numeros, quantidade_numeros, quantidade_palpites)
    return palpites

with gr.Blocks() as app:
    gr.Markdown("""
    # Simulador da Mega-Sena
    Escolha a quantidade de números e palpites e insira os números do último sorteio. A lógica será escolhida automaticamente.
    """)

    with gr.Row():
        ultimo_sorteio = gr.Textbox(label="Último Sorteio (6 números separados por vírgula)")
        quantidade_numeros = gr.Slider(6, 9, step=1, label="Quantidade de Números por Palpite")
        quantidade_palpites = gr.Slider(1, 10, step=1, label="Quantidade de Palpites")

    palpites_output = gr.Textbox(label="Palpites Gerados", interactive=False)

    gerar_palpites_btn = gr.Button("Gerar Palpites")
    gerar_palpites_btn.click(interface, inputs=[ultimo_sorteio, quantidade_numeros, quantidade_palpites], outputs=[palpites_output])

app.launch(share=True)