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()