File size: 3,353 Bytes
ae8fad4
 
74633c6
 
ae8fad4
 
 
74633c6
ae8fad4
74633c6
 
 
 
 
 
ae8fad4
 
 
 
 
 
 
 
74633c6
 
ae8fad4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74633c6
 
ae8fad4
74633c6
 
 
 
 
 
 
ae8fad4
 
 
74633c6
 
 
ae8fad4
 
 
 
 
 
 
 
74633c6
ae8fad4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
87
88
89
90
import random
import gradio as gr
import json
import os

def obter_resultados():
    """
    Retorna os números dos últimos 15 concursos armazenados em um arquivo JSON.
    """
    arquivo_json = "resultados.json"  # Nome do arquivo JSON
    if os.path.exists(arquivo_json):
        with open(arquivo_json, "r") as file:
            return json.load(file)
    else:
        raise FileNotFoundError(f"O arquivo '{arquivo_json}' não foi encontrado.")

def atualizar_resultados(novos_numeros, resultados):
    """
    Atualiza a base de dados com os novos números do sorteio,
    mantendo sempre os últimos 15 concursos.
    """
    if len(novos_numeros) != 6 or any(n < 1 or n > 60 for n in novos_numeros):
        raise ValueError("Os números do sorteio devem ser uma lista de 6 números entre 1 e 60.")
    resultados.insert(0, novos_numeros)
    return resultados[:15]

def gerar_palpites(resultados, quantidade_numeros, quantidade_palpites, logica):
    """
    Gera palpites para a Mega-Sena com base na lógica escolhida.
    """
    palpites = []
    todos_os_numeros = list(range(1, 61))

    # Contagem de frequências
    frequencias = {n: 0 for n in todos_os_numeros}
    for resultado in resultados:
        for numero in resultado:
            frequencias[numero] += 1

    # Números frequentes e atrasados
    mais_frequentes = sorted(frequencias, key=frequencias.get, reverse=True)[:10]
    atrasados = [n for n in todos_os_numeros if frequencias[n] == 0]

    for _ in range(quantidade_palpites):
        palpite = set()  # Usar um conjunto para evitar repetições

        if logica == 3:  # Lógica Frequentes + Atrasados
            while len(palpite) < quantidade_numeros:
                # Adicionar números frequentes
                if len(palpite) < min(3, quantidade_numeros):
                    palpite.add(random.choice(mais_frequentes))
                # Adicionar números atrasados ou gerais para completar
                else:
                    palpite.add(random.choice(atrasados if atrasados else todos_os_numeros))

        elif logica == 4:  # Lógica Alternância Estratégica
            faixas = [(1, 10), (11, 20), (21, 30), (31, 40), (41, 50), (51, 60)]
            while len(palpite) < quantidade_numeros:
                faixa = random.choice(faixas)
                palpite.add(random.randint(*faixa))

        else:
            raise ValueError("Lógica inválida. Escolha entre 3 (Frequentes + Atrasados) ou 4 (Alternância Estratégica).")

        palpites.append(sorted(palpite))

    return palpites

def interface(quantidade_numeros, quantidade_palpites, logica):
    try:
        resultados = obter_resultados()
        palpites = gerar_palpites(resultados, quantidade_numeros, quantidade_palpites, logica)
        return "\n".join([f"Palpite {i+1}: {p}" for i, p in enumerate(palpites)])
    except Exception as e:
        return str(e)

# Configuração da interface Gradio
demo = gr.Interface(
    fn=interface,
    inputs=[
        gr.Slider(6, 9, step=1, label="Quantos números por palpite?"),
        gr.Slider(1, 10, step=1, label="Quantos palpites deseja gerar?"),
        gr.Radio([3, 4], label="Escolha a lógica (3 - Frequentes + Atrasados, 4 - Alternância Estratégica):")
    ],
    outputs=gr.Textbox(label="Palpites Gerados")
)

if __name__ == "__main__":
    demo.launch()