|
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)) |
|
|
|
|
|
if logica is None: |
|
if quantidade_palpites > 5: |
|
logica = 3 |
|
elif quantidade_numeros > 6: |
|
logica = 2 |
|
else: |
|
logica = 1 |
|
|
|
for _ in range(quantidade_palpites): |
|
if logica == 1: |
|
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: |
|
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: |
|
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 |
|
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) |
|
|