Guest Zangado Posted December 20, 2017 Share Posted December 20, 2017 6 horas atrás, bitwizardry disse: edcronos2, Operações boleanas em assembly funcionam da mesma forma para variáveis 32 e 64 bits. A sintaxe é a mesma. Exemplo: int a; int b; int c; mov eax, a mov ebx b and eax, ebx mov c, eax se "a" ,"b" e "c" fossem variáveis x64, ficaria assim... __int64 a; __int64 b; __int64 c; mov rax, a mov rbx b and rax, rbx mov c, rax e a variável "c" conteria o resultado do AND entre "a" e "b", só muda o registrador; No caso de variáveis 128 bits, tbm é possível, mas a coisa fica mais complicada pois vc teria que passar um pointer do seu array de 8 bytes para dentro de um registrador SIMD, e outro pointer para outro, Se sua variável for "signed" é um comando, se for "unsigned" é outro, e a sintaxe é meio assustadora. obrigado, deve dar para me virar com isso me diga se é possivel isso? __int64 a; __int64 b; __int64 c; int Count; asm { mov rax, a mov rbx b and rax, rbx mov c, rax popcnt Count , rax } pelo que reparei o resultado vai para o registrador que guarda o primeiro valor a ser trabalhado e não em um registrador a parte oq impossibilita reutilizar os valores guardados nos registradores para outras operações mas seria possivel algo como? mov rax, a mov rbx , b And rax, rbx mov c , rax popcnt eax, rax mov rax, a Or rax, rbx mov d , rax popcnt ebx, rax add eax, ebx mov count , eax para deixar mais rapido o processo talvez aplicar diretamente um loop em cima de uma array já com os dados a ser trabalhados e com saida para outro array esse tipo de implementação em funções torna todo o processo com filtros e outras coisas bem mais rapidos bem só ficar especulando não leva a nada , @Jimmy Durão desculpa ser por aqui, mas é para vc ver o pq seria bom uma categoria de programação voltada a loteria, tipo, "Algorismos, códigos e dicas" , isso para não misturar já que é uma parte importante e de base e atinge varias linguagens e até o excel na parte de vba ao contrario da loteria diretamente, pequenas dicas nesse lado pode ser de grande valia para quem está implementando algo seja um filtro ou um simples conferidor Quote Link to comment Share on other sites More sharing options...
DixieJoe Posted December 20, 2017 Share Posted December 20, 2017 bitwizardry, Obrigado pelas explicações. O Delphi não tem uma classe para SETS como no C++. As funções que tenho, eu mesmo fiz usando um tipo SET no Delphi. Faço tudo nas minhas funções (gerar, conferir, contar, etc.). Até estou satisfeito com as funções. Com exceção da função de contar que pode ser melhorada em muito, com certeza. Vou fazer um "esforço" neste final de ano para aprender a usar suas dicas com Assembly para melhorar a contagem. A único coisa que eu ainda fico em dúvida é quanto a "dividir" um SET de 100 bits (transformando-o em 2 UInt64 ou Int64). Sei fazer a separação. Minha dúvida é quanto a eficiência, claro. Depois de separados em 2 Int64, posso contar cada Int64 em separado, usando suas dicas de Assembly com POPCOUNT e somando as 2 quantidades. Acho que vai ser por ai... Mesmo que não seja muito eficiente, deve ser mais rápido do que a forma que eu uso hoje que é VARRER um SET, procurando todos os bits setados e incrementado uma variável de Contagem. Tempo igual (demorado, se comparado com Assembly) para qualquer contagem. Seja de 1 bit em 100 ou de 20 bits em 100. De novo, muito obrigado pelas dicas até aqui. Assim que tiver algo pronto, te informo os resultados. ---------- Curiosidade: você trabalha (programando) com Assembly? dixiejoelottolex gmail com Quote Link to comment Share on other sites More sharing options...
bitwizardry Posted December 31, 2017 Share Posted December 31, 2017 Em 12/20/2017 at 09:56, DixieJoe disse: bitwizardry, Obrigado pelas explicações. O Delphi não tem uma classe para SETS como no C++. As funções que tenho, eu mesmo fiz usando um tipo SET no Delphi. Faço tudo nas minhas funções (gerar, conferir, contar, etc.). Até estou satisfeito com as funções. Com exceção da função de contar que pode ser melhorada em muito, com certeza. Vou fazer um "esforço" neste final de ano para aprender a usar suas dicas com Assembly para melhorar a contagem. A único coisa que eu ainda fico em dúvida é quanto a "dividir" um SET de 100 bits (transformando-o em 2 UInt64 ou Int64). Sei fazer a separação. Minha dúvida é quanto a eficiência, claro. Depois de separados em 2 Int64, posso contar cada Int64 em separado, usando suas dicas de Assembly com POPCOUNT e somando as 2 quantidades. Acho que vai ser por ai... Mesmo que não seja muito eficiente, deve ser mais rápido do que a forma que eu uso hoje que é VARRER um SET, procurando todos os bits setados e incrementado uma variável de Contagem. Tempo igual (demorado, se comparado com Assembly) para qualquer contagem. Seja de 1 bit em 100 ou de 20 bits em 100. De novo, muito obrigado pelas dicas até aqui. Assim que tiver algo pronto, te informo os resultados. ---------- Curiosidade: você trabalha (programando) com Assembly? dixiejoelottolex gmail com DixieJoe, o esforço computacional gasto na varredura do SET tranformado-os em 2 UInt64s, somado aos popcounts, será praticamente igual ou maior do que a contagem que você já está realizando, por um motivo muito simples: você precisará loopar os SETS de qualquer forma em ambos os casos. Faça uma simulação com 10 milhões de contagens, meça o tempo gasto de cada procedimento e você mesmo constatará o que estou dizendo. A vantagem do algorítmo do Uros (que na verdade não foi criado por ele) é que o tempo gasto é proporcional ao números de bits a serem contatos, quanto menos bits, mais rápido. A instrução popcnt (até onde eu testei) gasta o mesmo tempo independentemente da quantidade a ser contada, o que é uma vantagem quando o processador suporta essa tecnologia, mas... do ponto de vista prático/real, estamos falando de alguns poucos milisegundos. E respondendo sua pergunta, não trabalho com assembly, aprendi o pouco que sei via tutoriais pela net. Quote Link to comment Share on other sites More sharing options...
DixieJoe Posted December 31, 2017 Share Posted December 31, 2017 bitwizardry, Muito obrigado pelas explicações. Tenho que concordar com você. Ainda não testei o contador usando popcount (para até 64 bits) e nem comparei com o contador com SETS que tenho. No ano que vem (rsrsrsrsrs), vou fazer isso. Quote Link to comment Share on other sites More sharing options...
Bruno Cintra Posted January 18, 2018 Share Posted January 18, 2018 Em 04/11/2017 at 16:24, oiregor disse: @Bruno Cintra funciona!!!!!! montando / adaptando para dupla sena, onde já faço a seleção das dezenas escolhidas e os filtros que estão acima... sem muita mexida nos filtros... mas ativando funções para uso de algumas dezenas e não a geração completa da loteria... MUITO OBRIGADO! fala ai blz,vc só mexe com vba,é que estou com um programa aqui achado na internet feito justbasic,faz estatistica par/impar,final digitos,decadas e somas e gera conjuntos por concursos anteriores,estou tentanto passar para vba,tlves poderia me ajudar,o programa é do autor Ashley Taylor 2008,ele deixou o codigo fonte completo eu ja mudei para megasena,o programa é até 49 numeros.olha imagem do programa https://drive.google.com/open?id=1LvAaPNBX7vH8qyZcLcImUFJyFeOBvoIi 1 Quote Link to comment Share on other sites More sharing options...
Giovana Posted January 25, 2018 Share Posted January 25, 2018 Oi pessoal, Estou com o seguinte problema, uso o Cologa, o qual acho maravilhoso (interface, etc), mas, infelizmente, o mesmo é muito lento, de modo que torna mesmo impossível eu conseguir finalizar minhas combinações. Exemplo: ontem à noite rodei as combinações totais para a Megasena (considerando uma fixa), daí apliquei um filtro e o programa está rodando desde então (há mais de 17 horas), com nem 50% concluído. A questão é que preciso rodar essa combinação com trocentos filtros desse tipo, uma a uma, para compilar todos os resultados (ou seja, cada combinação, considerando um número fixo, eu precisaria passar por 1500 filtros a cada vez - tipo 5 milhões de combinações e um filtro, novamente essas mesmas 5 milhões de combinações, referentes à mesma dezena fixa, e outro filtro, e assim por diante, até passar cada uma delas por cerca de 1500 filtros e, daí, partir para à outra série de combinações com outra dezena e a série de 1500 filtros, e assim sucessivamente, até completar as 60 dezenas). Nesse ritmo, se eu testar essa combinação com cada um de 1500 filtros, eu levaria, no mínimo, 1500 dias para cada filtro e isso considerando uma única dezena, ou unidade, fixa. Levando em conta que na Mega são 60 números, eu levaria 1500 dias x 60 números. Considerando, ainda, que no Cologa eu posso abrir umas 10 abas para cada uma dessas abas trabalhar individualmente, e ao mesmo tempo, então, eu levaria aproximadamente 1500 dias x 60 números / 10, o que daria uns 25 anos! Ou seja, alguém saberia dizer como tornar o Cologa mais rápido no processamento??! Ou alguém teria alguma alternativa, algum software alternativo mais que pudesse ler as informações do Cologa (meus filtros estão todos no Cologa)?? Se alguém puder me ajudar nisso, e eu conseguir um resultado positivo, eu prometo que eu não esquecerei da Caloi... Quote Link to comment Share on other sites More sharing options...
Joh2010 Posted January 25, 2018 Share Posted January 25, 2018 @Giovana Tambem tenho o mesmo problema que o seu, meu computador eh um dual core, então eu nem tento usar esse programa para testes mais robustos. Talvez pra quem tem dinheiro para comprar um core i7 ele seja razoável. Acho que quem o criou nao tem interesse em deixa-lo mais rápido. SE alguem te passar um programa com um pouco mais de rapidez poste ai pfv. Grato. Quote Link to comment Share on other sites More sharing options...
Guest websilva Posted January 25, 2018 Share Posted January 25, 2018 33 minutos atrás, joh_joh2010 disse: @Giovana Tambem tenho o mesmo problema que o seu, meu computador eh um dual core, então eu nem tento usar esse programa para testes mais robustos. Talvez pra quem tem dinheiro para comprar um core i7 ele seja razoável. Acho que quem o criou nao tem interesse em deixa-lo mais rápido. SE alguem te passar um programa com um pouco mais de rapidez poste ai pfv. Grato. A limitação ocorrerá em qualquer hardware em função da quantidade de cálculos e comparações que o procedimento requer. Dependendo do conhecimento prévio em matemática e programação (qualquer que seja a linguagem, preferencialmente de baixo nível), é possível criar algorítimos mais otimizados, que aceleram o processo, transformando horas ou dias em minutos ou segundos. Uma sugestão: jogos de loteria são combinações de números, ou seja, conjuntos e como tais, podem ser representados em forma matricial (matrizes), de forma que operações com matrizes, como o cálculo de determinantes, por exemplo, mudam radicalmente o cenário exposto. Utilizo um i3 com 4Mb RAM em um notebook Dell com distro Linux Slackware otimizado e em modo texto, e a performance atende adequadamente ao que se deseja. Quote Link to comment Share on other sites More sharing options...
Guest websilva Posted January 25, 2018 Share Posted January 25, 2018 Em tempo: operações com matrizes, não vão, de forma mágica, apresentar as dezenas que serão sorteadas no próximo concurso, porém, permitem utilizar filtros que se executados da forma empírica (como a exposta em alguns algorítimos neste post), tornam o processamento inviável. Quote Link to comment Share on other sites More sharing options...
DixieJoe Posted January 25, 2018 Share Posted January 25, 2018 Giovana, Só conhecendo melhor o tipo de filtro que você quer usar para ver se podemos ajudar. Exemplos; Filtros do tipo QTE dezenas ACEITAS dos Primos (você tem a relação dos Primos da Loteria) e com MIN=4 e MAX=7 para a Lotofacil, por exemplo demoram muito pouco para serem executados se a rotina de filtragem for adequada. Imagino que o Cologa faça dessa forma (eu não uso o Cologa para trabalhar com Filtros). Uso meu próprio programa e, só a título de exemplo, esse filtro ai, passado em todas as 3,2 milhões de combinações da LF demora 40 segundos porque deixa muitos jogos. O tempo não é o de filtragem mas de gravação da minha linguagem de programação. Se você for usar filtros do tipo Filtro de Grupo no Cologa, fica mais rápido no meu programa. Eu consigo ler um arquivo de filtros do tipo Filtro de Grupo do Cologa. ---- Estou à disposiçao para avaliar com você como agilizar seus filtros. Realmente, estou achando muito tempo. Apesar que, para a Megasena pode demorar mesmo pela quantidade envolvida. Um segredo dos filtros que aprendi ao longo de anos usando filtros: Tente colocar primeiro no seu arquivo de filtros, aqueles filtros que mais tiram jogos. Isso parece óbvio, mas faz uma diferença enorme na hora de avaliar o tempo gasto na filtragem. Quote Link to comment Share on other sites More sharing options...
DixieJoe Posted January 25, 2018 Share Posted January 25, 2018 websilva, Poderia compartilhar conosco algum exemplo do que você chama de filtro de Matriz? Não consegui entender sem ver um exemplo Quote Link to comment Share on other sites More sharing options...
Joh2010 Posted January 25, 2018 Share Posted January 25, 2018 5 minutos atrás, DixieJoe disse: Filtros do tipo QTE dezenas ACEITAS dos Primos (você tem a relação dos Primos da Loteria) e com MIN=4 e MAX=7 para a Lotofacil, por exemplo demoram muito pouco para serem executados se a rotina de filtragem for adequada. Eu por exemplo, divido as 3 milhoes em 4 partes no excel, jogos um somar produto e uso o filtro do excel mesmo, em segundos ele filtra tudo , entao apenas copio o resultado para um txt ou para outra pasta de trabalho. Quem nao tem cao caça com gato. Agora quem trabalha com a mega e tem computador limitado ta frito mesmo. Eu mesmo n~~ao tenho tempo para esperar sete oito horas para um programa fazer uma filtragem. Quote Link to comment Share on other sites More sharing options...
Joh2010 Posted January 25, 2018 Share Posted January 25, 2018 1 hora atrás, websilva disse: A limitação ocorrerá em qualquer hardware em função da quantidade de cálculos e comparações que o procedimento requer. Dependendo do conhecimento prévio em matemática e programação (qualquer que seja a linguagem, preferencialmente de baixo nível), é possível criar algorítimos mais otimizados, que aceleram o processo, transformando horas ou dias em minutos ou segundos. Uma sugestão: jogos de loteria são combinações de números, ou seja, conjuntos e como tais, podem ser representados em forma matricial (matrizes), de forma que operações com matrizes, como o cálculo de determinantes, por exemplo, mudam radicalmente o cenário exposto. Utilizo um i3 com 4Mb RAM em um notebook Dell com distro Linux Slackware otimizado e em modo texto, e a performance atende adequadamente ao que se deseja. Olá @websilva valeu pela resposta e essa parte eu entendo, só disse para a amiga que talvez não deva esperar que exista um trabalho em conjunto ou algum interesse em prol desse assunto, OU SEJA AS VEZES O PRÓPRIO CRIADOR DO PROGRAMA NÃO TEM INTERESSE EM AJUDA NESSES SENTIDO. Até mesmo eu, tenho estudos que não posto pois acho que não encontrei "sintonia" suficiente para isso, às vezes até posto uns assuntos fracos, se estou errado? Talvez, mas ainda não rolou. Eu por exemplo, quando meu computador não aguenta o tranco, vou numa das lan houses próximas da minha casa, como elas trabalham com jogos pesados têm computadores mais potentes. Mas reitero o que disse, quem tem computador fraco está em alta desvantagem ainda. Quote Link to comment Share on other sites More sharing options...
Joh2010 Posted January 25, 2018 Share Posted January 25, 2018 1 hora atrás, websilva disse: Em tempo: operações com matrizes, não vão, de forma mágica, apresentar as dezenas que serão sorteadas no próximo concurso, porém, permitem utilizar filtros que se executados da forma empírica (como a exposta em alguns algorítimos neste post), tornam o processamento inviável. @websilva Vc conhece algum programa ou estudo que, usando resultados passados ou modelos e fórmulas matemáticas ou estatísticas pelo menos tentam isso? E que seja passível de interpretação (entendimento) da saída( ou sugestão)? Quote Link to comment Share on other sites More sharing options...
Guest websilva Posted January 25, 2018 Share Posted January 25, 2018 47 minutos atrás, DixieJoe disse: websilva, Poderia compartilhar conosco algum exemplo do que você chama de filtro de Matriz? Não consegui entender sem ver um exemplo Dado que cada uma 3.268.760 combinações pode ser representada por uma matriz de ordem 5, {a11,a12,a13,...a55} Cada matriz possui um Determinante, cujo emprego das propriedades, se adequadamente utilizadas, permitem selecionar rapidamente um determinado conjunto que atenda o requisito de seleção, (Primos, Fibonacci, etc). A dica é usar Laplace na criação do script que fara o cálculo do Determinante de Ordem 5, por motivos óbvios. Quote Link to comment Share on other sites More sharing options...
Guest websilva Posted January 25, 2018 Share Posted January 25, 2018 7 minutos atrás, joh_joh2010 disse: Olá @websilva valeu pela resposta e essa parte eu entendo, só disse para a amiga que talvez não deva esperar que exista um trabalho em conjunto ou algum interesse em prol desse assunto, OU SEJA AS VEZES O PRÓPRIO CRIADOR DO PROGRAMA NÃO TEM INTERESSE EM AJUDA NESSES SENTIDO. Até mesmo eu, tenho estudos que não posto pois acho que não encontrei "sintonia" suficiente para isso, às vezes até posto uns assuntos fracos, se estou errado? Talvez, mas ainda não rolou. Eu por exemplo, quando meu computador não aguenta o tranco, vou numa das lan houses próximas da minha casa, como elas trabalham com jogos pesados têm computadores mais potentes. Mas reitero o que disse, quem tem computador fraco está em alta desvantagem ainda. Especificamente para cálculos de estatística, seleção e ou filtragem, um equipamento modesto é suficiente, o que de fato importa são dois fatores: o sistema operacional utilizado e a montagem do script de programação. Utilizar um programa pronto, como o citado COLOGA, limita muito as opções, pois até onde sei, só roda em plataforma Microsoft. Poste mais sobre seus estudos, quem sabe podemos acelerar ou desemperrar algum ponto interessante? Quote Link to comment Share on other sites More sharing options...
Guest websilva Posted January 25, 2018 Share Posted January 25, 2018 7 minutos atrás, joh_joh2010 disse: @websilva Vc conhece algum programa ou estudo que, usando resultados passados ou modelos e fórmulas matemáticas ou estatísticas pelo menos tentam isso? E que seja passível de interpretação (entendimento) da saída( ou sugestão)? Veja o post que respondi ao DixieJoe... Quote Link to comment Share on other sites More sharing options...
Joh2010 Posted January 25, 2018 Share Posted January 25, 2018 32 minutos atrás, websilva disse: Veja o post que respondi ao DixieJoe... Vc fala das determinantes? Se for eu tenho um irmão que engenheiro e matemático, mas não o incomodo pq ele não tem tempo mesmo. Mas ele acabou de me dar uma aulinha aqui.Desde LaPlace Regra de Chió. Mas não entra na minha mente, deixa esse assunto para vcs, os grandes mesmo rs. Mas obrigado pelo incentivo! Quote Link to comment Share on other sites More sharing options...
Guest websilva Posted January 25, 2018 Share Posted January 25, 2018 29 minutos atrás, joh_joh2010 disse: Vc fala das determinantes? Se for eu tenho um irmão que engenheiro e matemático, mas não o incomodo pq ele não tem tempo mesmo. Mas ele acabou de me dar uma aulinha aqui.Desde LaPlace Regra de Chió. Mas não entra na minha mente, deixa esse assunto para vcs, os grandes mesmo rs. Mas obrigado pelo incentivo! Entendo... Mas para outros membros do fórum que pretendam utilizar determinantes, neste caso a Regra de Chió não é aplicável, pois requer que o primeiro elemento da matriz seja 1. Quote Link to comment Share on other sites More sharing options...
Giovana Posted January 26, 2018 Share Posted January 26, 2018 Websilva, Vou revisar matrizes e determinantes para ver se se aplica (velocidade de processamento). Não consigo enxergar como, mas também há séculos não vejo esse tema. Mas, não estou entendendo a questão de " operações com matrizes, não vão, de forma mágica, apresentar as dezenas que serão sorteadas no próximo concurso," pois se estou aplicando os filtros, e os filtros se confirmarem adequados, as dezenas premiadas estarão no resultado da filtragem. Quote Link to comment Share on other sites More sharing options...
Giovana Posted January 26, 2018 Share Posted January 26, 2018 joh_joh2010, Salvo engano, parece que o problema não é no computador, infelizmente. Mas se for no computador, gostaria de saber a montagem perfeita que deixasse o cologa veloz. Velocidade é fundamental! Quote Link to comment Share on other sites More sharing options...
Guest websilva Posted January 26, 2018 Share Posted January 26, 2018 (edited) 18 minutos atrás, Giovana disse: Websilva, Vou revisar matrizes e determinantes para ver se se aplica (velocidade de processamento). Não consigo enxergar como, mas também há séculos não vejo esse tema. Mas, não estou entendendo a questão de " operações com matrizes, não vão, de forma mágica, apresentar as dezenas que serão sorteadas no próximo concurso," pois se estou aplicando os filtros, e os filtros se confirmarem adequados, as dezenas premiadas estarão no resultado da filtragem. Vou dar um exemplo prático... C:18,15=816 São necessários 816 conjuntos de 15 elementos (volantes) para fechamento pleno, o que significa que se as 15 dezenas sorteadas estiverem entre as 18 jogadas, o prêmio máximo está garantido. Isso não é teoria. É Combinação. Ocorre que 816 volantes custam R$1.632,00. um valor alto para a maioria dos apostadores e um risco também elevado, pois C:25,18=480.700 (total de combinações de 18 dezenas possíveis) Utilizando as propriedades e operações com determinantes, é possível reduzir e filtrar drasticamente o número total de conjuntos de 15 elementos (volantes) a serem submetidos a um ou mais filtros. Como já postei noutro tópico, em apenas 6% dos sorteios já realizados, o determinante da matriz dos resultados foi igual a zero. Edited January 26, 2018 by websilva Quote Link to comment Share on other sites More sharing options...
Guest websilva Posted January 26, 2018 Share Posted January 26, 2018 1 minuto atrás, Giovana disse: joh_joh2010, Salvo engano, parece que o problema não é no computador, infelizmente. Mas se for no computador, gostaria de saber a montagem perfeita que deixasse o cologa veloz. Velocidade é fundamental! Quer minha sugestão? Quote Link to comment Share on other sites More sharing options...
Giovana Posted January 26, 2018 Share Posted January 26, 2018 Claro! Quote Link to comment Share on other sites More sharing options...
Guest websilva Posted January 26, 2018 Share Posted January 26, 2018 1 minuto atrás, Giovana disse: Claro! Pense de maneira lógica... Se você investe num equipamento mais robusto e consequentemente mais caro, não há nenhuma garantia de que o COLOGA, ou outro software irá ter um melhor desempenho e performance que justifique o custo. ... Considere trocar de software, ou melhor ainda: monte seus próprios scripts. 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.