Download app.py from cngsm/sena: direct link, hf CLI and curl.
- Browser
- Download file 3.72 kB
-
https://huggingface.co/spaces/cngsm/sena/resolve/main/app.py
- Command line
-
hf download hf://spaces/cngsm/sena/app.py
-
curl -L -o app.py https://huggingface.co/spaces/cngsm/sena/resolve/main/app.py
3.72 kB
| 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) | |