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)