BigMax Posted October 25, 2023 Share Posted October 25, 2023 (edited) Por favor, quem entende de programação em Python me ajude a entender se realmente está comparando corretamente o conjunto de 4 linhas com todas as possibilidades de C 21,15 e gerando o relatório corretamente de lucro, empate ou prejuízo. Faço no Excel dá 4% de empate e restante lucro. Nesse script tudo lucro. import itertools # Defina as linhas fornecidas linhas = [ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21], [1, 2, 3, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], [4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20] ] # Defina os valores para coincidências valores = { 11: 6.00, 12: 12.00, 13: 18.00, 14: 6.00, 15: 6.00 } # Gere todas as combinações C(21, 15) todas_combinacoes = list(itertools.combinations(range(1, 22), 15)) # Inicialize as contagens lucro = 0 prejuizo = 0 # Abra o arquivo relatório.txt para escrita with open("relatorio.txt", "w") as relatorio: for combinacao in todas_combinacoes: # Verifique quantos números da combinação estão em cada linha coincidencias = [sum(1 for num in combinacao if num in linha) for linha in linhas] # Calcule o valor ganho com base nas coincidências ganho = 0 for coincidencia in coincidencias: if coincidencia in valores: ganho += valores[coincidencia] # Atualize as contagens if ganho == 0: prejuizo += 1 else: lucro += 1 # Escreva o resultado no arquivo de relatório relatorio.write("\nResumo:\n") relatorio.write(f"Lucro em {lucro} combinações\n") relatorio.write(f"Prejuízo em {prejuizo} combinações\n") Edited January 20 by BigMax mudança título 2 Quote Link to comment Share on other sites More sharing options...
BigMax Posted October 25, 2023 Author Share Posted October 25, 2023 Teria que apresentar um relatório assim: Prejuizo em: 0/54264 = 0.0% Nao prejuizo em: 9125/54264 = 16.81593690107622% Lucro em: 45139/54264 = 83.18406309892379% Mas não consigo, através de orientação chatgpt fazer a alteração. 1 Quote Link to comment Share on other sites More sharing options...
OdeioParasita Posted October 25, 2023 Share Posted October 25, 2023 9 hours ago, BigMax said: valores = { 11: 6.00, 12: 12.00, 13: 18.00, 14: 6.00, 15: 6.00 } if ganho == 0: prejuizo += 1 else: lucro += 1 Eu não domino nenhuma linguagem de programação, muito menos Python que é dinamicamente tipada, mas estranhei as partes que destaquei em vermelho. 1 Quote Link to comment Share on other sites More sharing options...
genesioggs23 Posted October 25, 2023 Share Posted October 25, 2023 10 horas atrás, BigMax disse: Por favor, quem entende de programação em Python me ajude a entender se realmente está comparando corretamente o conjunto de 4 linhas com todas as possibilidades de C 21,15 e gerando o relatório corretamente de lucro, empate ou prejuízo. Faço no Excel dá 4% de empate e restante lucro. Nesse script tudo lucro. import itertools # Defina as linhas fornecidas linhas = [ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21], [1, 2, 3, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], [4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20] ] # Defina os valores para coincidências valores = { 11: 6.00, 12: 12.00, 13: 18.00, 14: 6.00, 15: 6.00 } # Gere todas as combinações C(21, 15) todas_combinacoes = list(itertools.combinations(range(1, 22), 15)) # Inicialize as contagens lucro = 0 prejuizo = 0 # Abra o arquivo relatório.txt para escrita with open("relatorio.txt", "w") as relatorio: for combinacao in todas_combinacoes: # Verifique quantos números da combinação estão em cada linha coincidencias = [sum(1 for num in combinacao if num in linha) for linha in linhas] # Calcule o valor ganho com base nas coincidências ganho = 0 for coincidencia in coincidencias: if coincidencia in valores: ganho += valores[coincidencia] # Atualize as contagens if ganho == 0: prejuizo += 1 else: lucro += 1 # Escreva o resultado no arquivo de relatório relatorio.write("\nResumo:\n") relatorio.write(f"Lucro em {lucro} combinações\n") relatorio.write(f"Prejuízo em {prejuizo} combinações\n") Bom dia grande BigMax, tente uma ajuda com Shurato e ou Friaça!!! Quote Link to comment Share on other sites More sharing options...
BigMax Posted October 25, 2023 Author Share Posted October 25, 2023 1 hora atrás, OdeioParasita disse: mas estranhei as partes que destaquei em vermelho. É para não inflar muito a receita. kkkk Na verdade não sabia o valor real e coloquei qualquer um. E faltou o custo do jogo no valor inicial que deveria ser negativo em R$12,00. 1 Quote Link to comment Share on other sites More sharing options...
L981231 Posted October 25, 2023 Share Posted October 25, 2023 import itertools # Defina as linhas fornecidas linhas = [ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21], [1, 2, 3, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], [4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20] ] # Defina os valores para coincidências valores = { 11: 6.00, 12: 12.00, 13: 18.00, 14: 6.00, 15: 6.00 } # Gere todas as combinações C(21, 15) todas_combinacoes = list(itertools.combinations(range(1, 22), 15)) # Inicialize as contagens lucro = 0 prejuizo = 0 ganho = 0 # Abra o arquivo relatório.txt para escrita with open("relatorio.txt", "w") as relatorio: for combinacao in todas_combinacoes: # Verifique quantos números da combinação estão em cada linha coincidencias = [sum(1 for num in combinacao if num in linha) for linha in linhas] # Calcule o valor ganho com base nas coincidências for coincidencia in coincidencias: if coincidencia in list(valores.keys()): ganho += valores[coincidencia] lucro += 1 else: prejuizo += 1 # Escreva o resultado no arquivo de relatório relatorio.write("\nResumo:\n") relatorio.write(f"Ganho: {ganho}\n") relatorio.write(f"Lucro em {lucro} combinações\n") relatorio.write(f"Prejuízo em {prejuizo} combinações\n") Faz sentido isso aqui, o problema é que a condicao de if ganho == 0: estava fora do loop das coincidencias, e quando existia uma coincidencia com ganho a variavel ganho nunca era zero. veja se os resultados fazem sentido com esse codigo 2 Quote Link to comment Share on other sites More sharing options...
BigMax Posted October 25, 2023 Author Share Posted October 25, 2023 23 minutos atrás, L981231 disse: Faz sentido isso aqui, o problema é que a condicao de if ganho == 0: estava fora do loop das coincidencias, e quando existia uma coincidencia com ganho a variavel ganho nunca era zero. veja se os resultados fazem sentido com esse codigo Conforme os valores lançados ( premiação) dá um resultado diferente. Não sei se deveria colocar todos os valores de premiação em R$6,00 ou outros valores. O script que sugeriu gerou: Resumo: Ganho: 1043784.0 Lucro em 124964 combinações Prejuízo em 92092 combinações O que pressuponho correto seria : Prejuízo em: 0/54264 = 0.0% Não prejuízo em: 9125/54264 = 16.81593690107622% Lucro em: 45139/54264 = 83.18406309892379% //////////////////////////////// Obrigado pela atenção, Observo que não entendo nada de programação além de umas coisinhas do Basic de fins anos 80 e desde então só focado em loteria. //////////////////////////////// E o script funcionando é útil para muita gente. E quem não sabe, toma gosto e aprende junto. Novamente obrigado. Quote Link to comment Share on other sites More sharing options...
L981231 Posted October 25, 2023 Share Posted October 25, 2023 import itertools # Defina as linhas fornecidas linhas = [ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21], [1, 2, 3, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], [4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20] ] # Defina os valores para coincidências valores = { 11: 6.00, 12: 12.00, 13: 18.00, 14: 6.00, 15: 6.00 } # Gere todas as combinações C(21, 15) todas_combinacoes = list(itertools.combinations(range(1, 22), 15)) # O que pressuponho correto seria : # Prejuízo em: 0/54264 = 0.0% # Não prejuízo em: 9125/54264 = 16.81593690107622% # Lucro em: 45139/54264 = 83.18406309892379% # Inicialize as contagens lucro = 0 prejuizo = 0 empates = 0 # Abra o arquivo relatório.txt para escrita with open("relatorio.txt", "w") as relatorio: for combinacao in todas_combinacoes: coincidencias = [sum(1 for num in combinacao if num in linha) for linha in linhas] ganho = 0 for coincidencia in coincidencias: if coincidencia in valores: ganho += valores[coincidencia] # Assumindo que o valor de cada aposta é 3, caso o ganho das 4 apostas seja 12, consideramos um empate if ganho == 12: empates += 1 if ganho == 0: prejuizo += 1 else: lucro += 1 # Escreva o resultado no arquivo de relatório relatorio.write("\nResumo:\n") relatorio.write(f"Lucro em {lucro-empates} combinações\n") relatorio.write(f"Prejuízo em {prejuizo} combinações\n") relatorio.write(f"Empates em {empates} combinações\n") @BigMax Essa versao retorna uma diferenca de 150, mas acredito que a logica esta correta, talvez os valores de cada premiacao precisam ser atualizados. Estava faltando vc calcular o empate, nesse caso estou considerando cada aposta por R$ 3,00. Caso o ganho para a combinacao seja 12, consideramos um empate. Dai o Lucro é lucro - empate. Espero que tenha ajudado. 1 Quote Link to comment Share on other sites More sharing options...
BigMax Posted October 25, 2023 Author Share Posted October 25, 2023 42 minutos atrás, L981231 disse: import itertools # Defina as linhas fornecidas linhas = [ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21], [1, 2, 3, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], [4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20] ] # Defina os valores para coincidências valores = { 11: 6.00, 12: 12.00, 13: 18.00, 14: 6.00, 15: 6.00 } # Gere todas as combinações C(21, 15) todas_combinacoes = list(itertools.combinations(range(1, 22), 15)) # O que pressuponho correto seria : # Prejuízo em: 0/54264 = 0.0% # Não prejuízo em: 9125/54264 = 16.81593690107622% # Lucro em: 45139/54264 = 83.18406309892379% # Inicialize as contagens lucro = 0 prejuizo = 0 empates = 0 # Abra o arquivo relatório.txt para escrita with open("relatorio.txt", "w") as relatorio: for combinacao in todas_combinacoes: coincidencias = [sum(1 for num in combinacao if num in linha) for linha in linhas] ganho = 0 for coincidencia in coincidencias: if coincidencia in valores: ganho += valores[coincidencia] # Assumindo que o valor de cada aposta é 3, caso o ganho das 4 apostas seja 12, consideramos um empate if ganho == 12: empates += 1 if ganho == 0: prejuizo += 1 else: lucro += 1 # Escreva o resultado no arquivo de relatório relatorio.write("\nResumo:\n") relatorio.write(f"Lucro em {lucro-empates} combinações\n") relatorio.write(f"Prejuízo em {prejuizo} combinações\n") relatorio.write(f"Empates em {empates} combinações\n") @BigMax Essa versao retorna uma diferenca de 150, mas acredito que a logica esta correta, talvez os valores de cada premiacao precisam ser atualizados. Estava faltando vc calcular o empate, nesse caso estou considerando cada aposta por R$ 3,00. Caso o ganho para a combinacao seja 12, consideramos um empate. Dai o Lucro é lucro - empate. Espero que tenha ajudado. Muito obrigado! Espero que seja útil também para outros. Boa sorte em seus jogos. 1 Quote Link to comment Share on other sites More sharing options...
BigMax Posted October 25, 2023 Author Share Posted October 25, 2023 (edited) Citar @L981231 Legal! Já rodei: Resumo: Lucro em 44989 combinações Prejuízo em 0 combinações Empates em 9275 combinações Entendi a diferença de 150. O correto é: Prejuízo em: 0/54264 = 0.0% Não prejuízo em: 9125/54264 = 16.81593690107622% Lucro em: 45139/54264 = 83.18406309892377% 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 01 02 03 04 05 06 07 08 09 16 17 18 19 20 21 01 02 03 10 11 12 13 14 15 16 17 18 19 20 21 04 05 06 07 08 10 11 12 13 14 16 17 18 19 20 Edited November 11, 2023 by BigMax acrescentar informação % Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.