Jump to content

[AJUDA] Programa para decompor um grupo em linhas de mais dezenas. Existe isso?


Wata

Recommended Posts

2 horas atrás, Omesmo disse:

o bom seria ter arquivos de matrizes de todas as loteria com mais dezenas

no forum tem matrizes de mais dezenas que cobre o total das combinações das loterias?
16.17.18.19 dezenas
tbm para outras loterias
apesar que tipo para a mega usar matriz de 7 8 dezenas daria muitas linhas para testes e seria mais vantagem elaborar um processo mais otimizado , mas para usar para a seninha e quininha 14,15 16,...até umas 25 30 dezenas nas matrizes poderia ajudar a definir bons esquemas
 

  • Like 2
Link to comment
Share on other sites

41 minutos atrás, Omesmo disse:

no forum tem matrizes de mais dezenas que cobre o total das combinações das loterias?
16.17.18.19 dezenas
tbm para outras loterias
apesar que tipo para a mega usar matriz de 7 8 dezenas daria muitas linhas para testes e seria mais vantagem elaborar um processo mais otimizado , mas para usar para a seninha e quininha 14,15 16,...até umas 25 30 dezenas nas matrizes poderia ajudar a definir bons esquemas

 

Falando especificamente da lotofácil todas as combinações são criadas de forma instantânea e trabalhadas diretamente na memoria, o código (object pascal) de geração das combinações me foi cedido gentilmente por DixieJoe, mas se não me engano, neste forum existe o mesmo código (em uma conversa que ele estava com guy novaes).

 

Observação: Esse código é ultra rápido na geração de combinações.

  • Like 2
Link to comment
Share on other sites

@Rany

Obrigado.

 

Agora consegui fazer funcionar.

Para algumas "poucas" milhares de dezenas de linhas vai bem, mas tentei aqui com umas 130 mil linhas e o pc travou.

Bom, até aí não tem muito o que fazer porque sei que a quantidade de processamento necessária vai ser realmente grande.

 

Esse "novo" (pra mim) modo de estudo vai ser útil em algum outro esquema que eu ainda vou pensar aqui...rs..😁...

 

Valeu.

😎

...

Link to comment
Share on other sites

16 minutos atrás, Wata disse:

@Rany

Obrigado.

 

Agora consegui fazer funcionar.

Para algumas "poucas" milhares de dezenas de linhas vai bem, mas tentei aqui com umas 130 mil linhas e o pc travou.

Bom, até aí não tem muito o que fazer porque sei que a quantidade de processamento necessária vai ser realmente grande.

 

Esse "novo" (pra mim) modo de estudo vai ser útil em algum outro esquema que eu ainda vou pensar aqui...rs..😁...

 

Valeu.

😎

...

 

130 mil linhas em cima de 17 números vai gastar mais de 40 horas fácil, essas 6800 linhas gastei umas 3 horas aqui e meu pc é relativamente bom.

 

Saudações!!!

  • Like 1
Link to comment
Share on other sites

8 minutos atrás, Rany disse:

 

130 mil linhas em cima de 17 números vai gastar mais de 40 horas fácil, essas 6800 linhas gastei umas 3 horas aqui e meu pc é relativamente bom.

 

Saudações!!!

eita, 3 horas?

meu pc então levaria uns 2 dias kkkkk
mas eu acho que está precisando otimizar esse processo aí, ou isso ou eu nao entendi exatamente oq vc fez

  • Like 2
Link to comment
Share on other sites

57 minutos atrás, Omesmo disse:

eita, 3 horas?

meu pc então levaria uns 2 dias kkkkk
mas eu acho que está precisando otimizar esse processo aí, ou isso ou eu nao entendi exatamente oq vc fez

 

17 números possui em torno de 1 milhão de combinações, essa quantidade de linhas tem que passar pelas 6800 linhas postadas por wata para ir encontrando as melhores linhas de 17 em relação as 6800 linhas, por isso acho que 3 horas foi até um tempo bom, kkkkkkkkkkkkkkkkk.

 

Observação: Como objetivo é encontrar uma matriz de 17 números que pegue os 15 pontos em todas as 6800 linhas, o código fica em looping até fechar essa matriz.

 

 

  • Like 1
Link to comment
Share on other sites

9 horas atrás, Rany disse:

 

1 -  Dentro da pasta TesteSets você tem que criar a pasta Lotofacil -- ficando assim: C:\TesteSets\Lotofacil

 

2 - Em arquivo B, depois de você selecionar o N e o K, você obrigatoriamente tem que clicar no botão laranja para ele carregar as linhas conforme vc selecionou em N e K.

 

bbb.png.adeec604c8074ffda36cfdb37c0e2ec3.png     xdax.png.d462526f4fee8bf744ad3275a1a30afa.png

 

3 - Deve ficar da forma abaixo:

 

cda.png.df201284b06fe7f70661df463d6202af.png

 

4 - Na imagem acima pode verificar que ele já começou a buscar as melhores linhas e a primeiro linha que ele gerou é exatamente igual ao que enviei nas postagens mais acima.

 

Qualquer dúvida só perguntar.

 

Saudações!!!!

 

 

 

Rany, Wata, omesmo,

 

Do jeito que o Rany fez, vai funcionar, sem dúvida. 

A única diferença é que está usando as 15000 (aproximadamente) e vai precisar rodar contra as 1.081.000 de 17 que existem nas 25 dezenas.

 

Funciona. Mas só vai demorar mais porque o processamento é maluco mesmo. TESTA as 1081000 contra todas as 15000 para encontrar a primeira MELHOR linha de 15 que cobre mais acertos de 15.

Depois vai repetindo o mesmo processamento (só tendo a vantagem de ir retirando as linhas que já foram cobertas no arquivo de 15000 de 15.)

 

 

Estou fazendo uma modificação nesse programa para ele carregar o arquivo de 15000 linhas de 15 dezenas como Arquivo A.

 

Na seleção para carregar Arquivo DADO na opção para arquivo de 17, vou colocar uma nova opção que vai entender que queremos "AMPLIAR" a quantidade de dezenas para linhas de 17 dezenas usando o mesmo arquivo já carregado na opção A. Isso após o usuário definir que quer linhas de 17 dezenas (sem se preocupar em dizer que é partir de 25 dezenas, quando for selecionada essa opção...)

Ao clicar no botaozinho laranja com o sinal de check, ele vai criar apenas as linhas de 17 possiveis com as dezenas diferentes que estiverem no Arquivo A.

 

A vantagem é que poderá ficar bem mais rápido o processamento porque não vamos precisar de todas as 1081000 de linhas de 17 dezenas quando estiver faltando uma ou mais dezenas nas 15000 linhas de 15.

 

O resto vai ser o mesmo processamento. 

 

Espero que funcione dessa forma.

 

------

 

o mesmo...

 

Quanto a fazer a mesma coisa para outras loterias, eu não tenho como fazer usando a mesma lógica e os mesmos recursos de processamento.

Eu utilizo os próprios bits dos números inteiros (resultados transformados em inteiros, como se fosse CSN) Ai a função de geração e de conferência "VOA".

Isso só consigo ainda fazer para 32 bits (integers de 32 bits).

 

Para outras loterias, não acredito que seja viável o meu algoritmo porque deve demorar uma eternidade. Mesmo que conseguisse trabalhar com 64 bits (para a Megasena, por exemplo).

 

 

  • Like 1
  • Thanks 2
Link to comment
Share on other sites

23 minutos atrás, Rany disse:

 

17 números possui em torno de 1 milhão de combinações, essa quantidade de linhas tem que passar pelas 6800 linhas postadas por wata para ir encontrando as melhores linhas de 17 em relação as 6800 linhas, por isso acho que 3 horas foi até um tempo bom, kkkkkkkkkkkkkkkkk.

 

Observação: Como objetivo é encontrar uma matriz de 17 números que pegue os 15 pontos em todas as 6800 linhas, o código fica em looping até fechar essa matriz.

 

 

Isso mesmo, Rany,

 

Nesse arquivo de 6800 você precisou de 3 horas.

 

Mas imagine arquivos maiores com 15000 linhas de 15 como citado pelo Wata no início do tópico. Ou mesmo arquivos maiores...

 

Mas o programa só pode ficar mais rápido do que isso caso o arquivo carregado em A não for tão grande e, principalmente, se ele não utilizar 1-2-3 dezenas das 25.

Ai, os quase 1.081000 de linhas de 17 vão cair bastante e ajudar no processamento.

 

Já tentei imaginar outra maneira de "conferir" uma linha contra outra para ficar mais rápido. Não encontrei. Acho que só com Assembly. Mas isso é pro futuro.

Não manjo nada de assembly e nem tenho certeza de que vai ajudar tanto.

 

  • Like 2
Link to comment
Share on other sites

1 minuto atrás, DixieJoe disse:

Isso mesmo, Rany,

 

Nesse arquivo de 6800 você precisou de 3 horas.

 

Mas imagine arquivos maiores com 15000 linhas de 15 como citado pelo Wata no início do tópico. Ou mesmo arquivos maiores...

 

Mas o programa só pode ficar mais rápido do que isso caso o arquivo carregado em A não for tão grande e, principalmente, se ele não utilizar 1-2-3 dezenas das 25.

Ai, os quase 1.081000 de linhas de 17 vão cair bastante e ajudar no processamento.

 

Já tentei imaginar outra maneira de "conferir" uma linha contra outra para ficar mais rápido. Não encontrei. Acho que só com Assembly. Mas isso é pro futuro.

Não manjo nada de assembly e nem tenho certeza de que vai ajudar tanto.

 

 

Existem outras estratégias que podem ser usadas, mas nunca estudei o suficiente para implementar. O processador dos nossos computadores possuem vários núcleos e teoricamente é possivel dividir a tarefas para esses outros nucleos, tornando o processo várias vezes mais rapido, claro que isso em relação a quantidade de núcleos, etc.

  • Like 1
Link to comment
Share on other sites

1 minuto atrás, Rany disse:

 

Existem outras estratégias que podem ser usadas, mas nunca estudei o suficiente para implementar. O processador dos nossos computadores possuem vários núcleos e teoricamente é possivel dividir a tarefas para esses outros nucleos, tornando o processo várias vezes mais rapido, claro que isso em relação a quantidade de núcleos, etc.

Não sei como utilizar vários nucleos, ainda.

 

Link to comment
Share on other sites

1 minuto atrás, Rany disse:

 

Existem outras estratégias que podem ser usadas, mas nunca estudei o suficiente para implementar. O processador dos nossos computadores possuem vários núcleos e teoricamente é possivel dividir a tarefas para esses outros nucleos, tornando o processo várias vezes mais rapido, claro que isso em relação a quantidade de núcleos, etc.

para esse tipo de processo então acho que o ideal seria mudr a logica mesmo

fazer oq o dix falou ou outra coisa

tipo pré analise do proprio conjunto de jogos "foi minha ideia inicial " e ir mesclado os proprios jogos em jogos de mais dezenas

  • Like 1
Link to comment
Share on other sites

Rany e Wata,

 

Achei excelente a quanitdade 202 linhas de 17 cobrindo todas as 15 do arquivo de 6000 linhas de 15 do Wata!

Mesmo assim, ainda fica uma quantidade grande para jogar na loteria alternativa com 17 dezenas.

 

Rany, você utilizou a opção de processar usando o botão Buscar Melhor Desempenho.

Nesta opção, faz o que se pede e o que o Wata deseja. Mas gera muitas linhas.

 

-----

 

Na outra opção ao lado, Buscar - Mais Acertos, o processamento não vai garantir acerto de 15 em todas as 6000 linhas do exemplo.

MAS... vai nos dar menos linhas com garantia X (aproximada) menor do que 100%.

 

Exemplo, se rodar novamente, usando essa opção, e solicitar apenas as linhas de 17 que acertarem mais de 50 vezes 15 pontos no arquivo de 6000, é provável que vamos ter pouco mais de 100 linhas de 17.

Não sei, de antemão, qual a garantia se pedir acima de 50 acertos (usei como exemplo 50 porque a linha com a maior quantidade de acertos teve 65 acertos).

 

Pode ser que seja necessário baixar para linhas com mais de 40 acertos de 15, por exemplo.

 

A vantagem desta opção é que é ela é extremamente mais rápida e vocês podem brincar modificando a quantidade minima de acertos de 15 desejada até chegar perto de um percentual de garantia que satisfaça.

Com certeza, sempre menor do que 100%.

 

Menor garantia, mas, com certeza, vai ter sorteios em que haverá 2 ou mais acertos de 15. Mesmo que fique sem premiar com 15 em 10% por exemplo, pode ser que ainda seja vantajoso por conta do maior número de linhas premiadas num mesmo sorteio.

 

E esse percentual de garantia precisa ser avaliado no outro software Prj Analisados de Arquivos, ok?

 

  • Like 2
Link to comment
Share on other sites

1 minuto atrás, Omesmo disse:

para esse tipo de processo então acho que o ideal seria mudr a logica mesmo

fazer oq o dix falou ou outra coisa

tipo pré analise do proprio conjunto de jogos "foi minha ideia inicial " e ir mesclado os proprios jogos em jogos de mais dezenas

 

Em casos específicos o que eu disse dá certo, o problema é implementar de forma correta. Por exemplo, quando tenho que gerar alguma coisa que vai demorar 1 hora por exemplo e tenho pressa para obter o resultado, eu compilo 4 executáveis com parametros diferentes (25% da tarefa para cada), e consigo fazer em 15 minutos o que queria (não é a forma correta, mas dá certo), o ruim que a cpu do pc vai a 100% e o pc fica práticamente inutilizável durante este tempo.

 

Em tempo: O código de processamente desenvolvido por DixieJoe é fantastico não há muita margem para melhorar,  o melhor caminho que vejo é utilizar os núcleos adicionais do processador, mas claro que é apenas minha opinião!!!

 

Saudações!!!

Link to comment
Share on other sites

11 minutos atrás, DixieJoe disse:

Não sei como utilizar vários nucleos, ainda.

 

 

Também ainda não sei, mas ainda vou estudar... Talvez as vesões mais recentes do delphi seja mais fácil, utilizo o turbo delphi e nem com 64 bits trabalha.

 

Saudações!!!

Link to comment
Share on other sites

3 minutos atrás, DixieJoe disse:

Rany e Wata,

 

Na outra opção ao lado, Buscar - Mais Acertos, o processamento não vai garantir acerto de 15 em todas as 6000 linhas do exemplo.

MAS... vai nos dar menos linhas com garantia X (aproximada) menor do que 100%.

 

Exemplo, se rodar novamente, usando essa opção, e solicitar apenas as linhas de 17 que acertarem mais de 50 vezes 15 pontos no arquivo de 6000, é provável que vamos ter pouco mais de 100 linhas de 17.

Não sei, de antemão, qual a garantia se pedir acima de 50 acertos (usei como exemplo 50 porque a linha com a maior quantidade de acertos teve 65 acertos).

 

Excelente, vou dá uma olhada e depois vê o percentual de garantia. Obrigado!!!!

Link to comment
Share on other sites

8 minutos atrás, Omesmo disse:

para esse tipo de processo então acho que o ideal seria mudr a logica mesmo

fazer oq o dix falou ou outra coisa

tipo pré analise do proprio conjunto de jogos "foi minha ideia inicial " e ir mesclado os proprios jogos em jogos de mais dezenas

 

Sim, uma idéia poderia ser:

 

1 - Antes de iniciar a procura da melhor linha, pegar a linha de 15 e verificar qual foi a dupla nas dezenas DE FORA que mais acertos teriam no arquivo de 6000 do Wata. Isso para garantir que, ao procurar, sempre teremos a maior quantidade de linhas de 15 acertadas com a nova linha de 17 a ser testada.

 

Não tenho certeza da eficácia desse raciocínio. Só fazendo e comparando para ter certeza. A princípio, pela lógica, deve ajudar a pegar sempre as melhores linhas de 17 que maior cobertura vão ter no arquivo de 6000 com 15

 

  • Like 1
Link to comment
Share on other sites

6 minutos atrás, Rany disse:

 

Também ainda não sei, mas ainda vou estudar... Talvez as vesões mais recentes do delphi seja mais fácil, utilizo o turbo delphi e nem com 64 bits trabalha.

 

Saudações!!!

Eu utilizo uma versão RIO (10.3).

Já temos versões mais atualizadas. Ainda não tive tempo de avaliar.

 

Qualquer hora, aprendemos a utilizar Assembly com rotina chamada pelo Delphi para "CONFERIR" JOGOS (OU LINHAS ENTRE SI).

 

Sem sombra de dúvida, esta função é a mais importante em qualquer estudo de loterias. Conferir/Comparar acertos, rsrsrs.

 

  • Like 1
Link to comment
Share on other sites

6 minutos atrás, Rany disse:

o ruim que a cpu do pc vai a 100% e o pc fica práticamente inutilizável durante este tempo.

se a cpu vai a 100% e nao consegue utilizar o pc ele já está usando todos os nucleos , se tivesse algum nucleo sobrando seria utilizado para outras tarefas

sobre mudar o processo falo na logica , ou seja nao ser nesse tipo de comparação direta entre 2 matrizes

  • Like 1
Link to comment
Share on other sites

4 minutos atrás, Rany disse:

 

Excelente, vou dá uma olhada e depois vê o percentual de garantia. Obrigado!!!!

Acredito que, para loterias, essa opção de Buscar Linhas com Maior quantidade de acertos deve trazer mais retorno do que a opção ao lado (Melhor Desempenho - que garante 100%).

 

Pela simples razão de que um conjunto de linhas que garante 80% de acertos (em quantidade de sorteios diferentes) pode muito bem ter mais acertos no total, se considerarmos que, em alguns sorteios podemos ter mais de 1 linha premiando em conjunto. Só testando pra confirmar neste caso específico. 

 

Em outras situações e para outras loterias, já confirmei que isso é válido.

 

O mais importante é que a quantidade de linhas para ter 80% de cobertura pode permitir jogar, mesmo sabendo que não acerta em 20% dos sorteios.

  • Like 1
Link to comment
Share on other sites

2 minutos atrás, Omesmo disse:

se a cpu vai a 100% e nao consegue utilizar o pc ele já está usando todos os nucleos , se tivesse algum nucleo sobrando seria utilizado para outras tarefas

sobre mudar o processo falo na logica , ou seja nao ser nesse tipo de comparação direta entre 2 matrizes

 

alguma sugestão quanto ao que mudar na lógica?

Sempre teremos 2 arquivos (1 geralmente muito grande e o outro podendo também ser grande). E sempre vamos ter que comparar todas as linhas dos 2 arquivos para confirmar qual linha de 17 (do exemplo) vai ter mais linhas "baixadas" no arquivo de linhas de 15 dezenas.

 

Verdadeiro processamento de "força-bruta", acha?

 

Ou será que descobriríamos uma lógica que consegue "dar" saltos, sem prejudicar o resultado final e meta que é a de ter a menor quantidade de linhas que consiga a maior garantia de acertos nos sorteios?

 

Eu não sei como fazer.

  • Like 2
Link to comment
Share on other sites

19 minutos atrás, Rany disse:

 

Em casos específicos o que eu disse dá certo, o problema é implementar de forma correta. Por exemplo, quando tenho que gerar alguma coisa que vai demorar 1 hora por exemplo e tenho pressa para obter o resultado, eu compilo 4 executáveis com parametros diferentes (25% da tarefa para cada), e consigo fazer em 15 minutos o que queria (não é a forma correta, mas dá certo), o ruim que a cpu do pc vai a 100% e o pc fica práticamente inutilizável durante este tempo.

 

Em tempo: O código de processamente desenvolvido por DixieJoe é fantastico não há muita margem para melhorar,  o melhor caminho que vejo é utilizar os núcleos adicionais do processador, mas claro que é apenas minha opinião!!!

 

Saudações!!!

Obrigado pelo elogio ao código. 

 

Para melhorar, acredito que só fazendo a mesma função em Assembly e utilizando dentro do Delphi.

 

Sei que isso é possivel. Uma vez vi um  código em Assembly que gerava mais de 300.000.000 de linhas de 6 dezenas, POR SEGUNDO. E conseguia aplicar uns 30 filtros (tudo feito no Assembly) também ultra-rápido.

 

Só que esse código era chamado de dentro de um BASIC diferente que eu não consegui me adaptar.

Mesmo tendo os fontes em Assembly (que eu comprei do programador da Sérvia, se não me engano), morri na praia. Não consegui usar no Delphi.

E um problema que tinha era que o software era específico para a loteria dele. Dificil de adaptar para as nossas loterias aqui...

 

O tempo passa.... Talvez ainda tenha esses códigos em Assembly em algum lugar. 
Só procurando. Mas não tenho tempo nem vontade de "recomeçar" novamente, kkkk. Aprender Assembly na minha idade, fora de questão.

 

Vamos levando com o Delphi mesmo.

  • Like 2
Link to comment
Share on other sites

1 minuto atrás, DixieJoe disse:

Sempre teremos 2 arquivos (1 geralmente muito grande e o outro podendo também ser grande). E sempre vamos ter que comparar todas as linhas dos 2 arquivos para confirmar qual linha de 17 (do exemplo) vai ter mais linhas "baixadas" no arquivo de linhas de 15 dezenas.

 

Verdadeiro processamento de "força-bruta", acha?

sim, vale para tudo

mas a logica sempre pode ser melhorada "ou nao?"

tipo sua ideia é uma logica diferente do que é é feito pelo seu programa atualmente

 

  • Like 2
Link to comment
Share on other sites

1 minuto atrás, Omesmo disse:

sim, vale para tudo

mas a logica sempre pode ser melhorada "ou nao?"

tipo sua ideia é uma logica diferente do que é é feito pelo seu programa atualmente

 

Sim, qualquer lógica pode receber algum tipo de melhoria, em algum momento. Concordo.

  • Like 1
Link to comment
Share on other sites

8 minutos atrás, Omesmo disse:

se a cpu vai a 100% e nao consegue utilizar o pc ele já está usando todos os nucleos , se tivesse algum nucleo sobrando seria utilizado para outras tarefas

sobre mudar o processo falo na logica , ou seja nao ser nesse tipo de comparação direta entre 2 matrizes

 

O processador está a 100% não quer dizer todos os núcleos estão sendo usados de forma correta, por isso, que eu disse que faço uma "gambiara" e divido o processo em 4 partes (4 executáveis).

 

abc.png.49177fa54395052c715d1ec1a916891e.png

 

Veja os dados do meu CPU em single core faz 611,8 pontos em multi core faz 4557,3 pontos mais de 7.45 vezes mais desempenho.

 

Isso tecnicamente me diz que é possível fazer o processo até 7,45 vezes mais rápido se eu utilizar todos os cores de maneira correta.

 

Por isso conseguir utilzar o processamento da cpu em multi core é fundamental para acelerar o desempenho de certos processos.

 

Saudações!!!

 

 

  • Like 1
Link to comment
Share on other sites

2 minutos atrás, Rany disse:

 

O processador está a 100% não quer dizer todos os núcleos estão sendo usados de forma correta, por isso, que eu disse que faço uma "gambiara" e divido o processo em 4 partes (4 executáveis).

 

abc.png.49177fa54395052c715d1ec1a916891e.png

 

Veja os dados do meu CPU em single core faz 611,8 pontos em multi core faz 4557,3 pontos mais de 7.45 vezes mais desempenho.

 

Isso tecnicamente me diz que é possível fazer o processo até 7,45 vezes mais rápido se eu utilizar todos os cores de maneira correta.

 

Por isso conseguir utilzar o processamento da cpu em multi core é fundamental para acelerar o desempenho de certos processos.

 

Saudações!!!

 

 

Muito interessante, Rany.

 

Você dispara cada processamento em "cores" diferentes de dentro do seu programa e você mesmo gerencia? Ou o processador (e o Delphi/Turbo Pascal) tem recursos para dividir - sozinho - o processamento em N cores, conforme ele possa identificar que o processador tem disponíveis?

 

  • Like 2
Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...