Jump to content

Pedido: Algoritmo, pseudo código ou código fonte


Carlos Martins

Recommended Posts

Pessoal,

 

ia responder a todos que postaram algo útil ou que fizeram considerações importantes, mas isso ficaria muito repetitivo. Assim agradeço a todos ai pela contribuição e estarei olhando todos os códigos e sugestões postadas. 

 

Para quem interessar e desejar trocar informações a respeito, meus estudo estão direcionados para o seguinte problema:

 

Preciso encontrar um conjunto de jogos que me garanta em 100% que 50% das minhas apostas sejam premiadas com 11 pontos. Na verdade não sei se isso é possível ainda mas acredito que seja. Meu receio é que na medida que aumentar a quantidade de jogos para garantia dos 11 acertos eu aumente também a distância dos 50% de forma proporcional ou exponencial. Assim, estaria correndo atrás de uma coisa inalcançável e o método não funcionaria. 

 

 

Abraço a todos !!!

Link to comment
Share on other sites

Em 23/10/2017 at 02:22, Crazy Rabbit disse:

Não é questão de fazer uma planilha, que lhe dá minutos ou poucas horas, estamos falando de dias, meses, anos,

para conseguir montar o software.

 

Então sei o que é difícil, sei também o quanto é difícil, estamos eu e um programador, reconstruindo novamente

o PapaSorte, estamos a 2 meses de trabalho.

 

Então o criador, não vai dar para ninguém (Não estou falando em Dinheiro) estou falando de tempo e também

de abuso por não ter conseguido terminá-lo, é igual a um estupro não consentido.

 

Por isso afirmo, quem tem não dará a ele, nem a mim, nem a ninguém.

Não é questão monetária, é íntimo, simples assim.

 

Crazy Rabbit

papasorte tem funções excelentes que outros não tem, espero que consigam.

 

Link to comment
Share on other sites

Carlos Martins,

 

Essa é a meta de quase todos os jogadores e estudiosos.

 

50% de acertos nos jogos jogados, te garante retorno do investimento na Lotofacil e ainda permite concorrer para os prêmios maiores.

 

Só uma dica e um comentário:

 

O melhor desdobramento conhecido para garantir 11 pontos usando todas as 25 dezenas contem 43 jogos.

De vez em quando acerta mais de 1 de 11 e chega a 12 e até 13 esporadicamente.

Longe do retorno que você pretende.

 

Isso para lhe dizer que o caminho não deve ser gerar desdobramentos. Talvez gerar desdobramentos com filtros inteligentes (CHAMO DE INTELIGENTE, QUANDO O DESDOBRAMENTO CONSEGUIR GERAR JOGOS, CONSIDERANDO CARACTERÍSTICAS DOS JOGOS RECENTES, COM ALGUM RISCO ACEITÁVEL).

 

Assim, talvez seja possível obter alguma coisa.

 

Se tiver alguma sugestão ou idéia para testar, tenho ferramentas para vários tipos de testes. Conte comigo.

Link to comment
Share on other sites

Ola DixieJoe,

 

entendo que a tarefa não é nada fácil kkk.  Acho que para garantia de pelo menos um acerto de 11 sempre o número de jogos seja menor que 43 . Veja por exemplo meus jogos base:

 

01 02 03 04 05 06 07 08 09 10 25 15 18 14 19
01 02 03 04 05 11 12 13 14 15 23 07 18 09 19
01 02 03 04 05 16 17 18 19 20 12 25 15 22 10
01 02 03 04 05 21 22 23 24 25 20 16 11 09 10
06 07 08 09 10 11 12 13 14 15 18 17 16 24 22
06 07 08 09 10 16 17 18 19 20 23 21 24 03 05
06 07 08 09 10 21 22 23 24 25 05 11 13 04 02
11 12 13 14 15 16 17 18 19 20 09 10 22 23 24
11 12 13 14 15 21 22 23 24 25 08 02 09 04 06
16 17 18 19 20 21 22 23 24 25 07 10 15 13 06

 

Observe a performance deles do concurso 1500 a 1577

 

Premiado [numConcurso=1500, premiacao=11, aposta= 01 02 03 04 05 11 12 13 14 15 23 07 18 09 19]
Premiado [numConcurso=1500, premiacao=12, aposta= 01 02 03 04 05 16 17 18 19 20 12 25 15 22 10]
Premiado [numConcurso=1501, premiacao=12, aposta= 06 07 08 09 10 11 12 13 14 15 18 17 16 24 22]
Premiado [numConcurso=1501, premiacao=11, aposta= 06 07 08 09 10 21 22 23 24 25 05 11 13 04 02]
Premiado [numConcurso=1501, premiacao=11, aposta= 16 17 18 19 20 21 22 23 24 25 07 10 15 13 06]
Premiado [numConcurso=1502, premiacao=11, aposta= 01 02 03 04 05 11 12 13 14 15 23 07 18 09 19]
Premiado [numConcurso=1502, premiacao=11, aposta= 01 02 03 04 05 16 17 18 19 20 12 25 15 22 10]
Premiado [numConcurso=1503, premiacao=11, aposta= 01 02 03 04 05 16 17 18 19 20 12 25 15 22 10]
Premiado [numConcurso=1503, premiacao=11, aposta= 16 17 18 19 20 21 22 23 24 25 07 10 15 13 06]
Premiado [numConcurso=1506, premiacao=11, aposta= 06 07 08 09 10 16 17 18 19 20 23 21 24 03 05]
Premiado [numConcurso=1509, premiacao=11, aposta= 01 02 03 04 05 06 07 08 09 10 25 15 18 14 19]
Premiado [numConcurso=1509, premiacao=11, aposta= 06 07 08 09 10 11 12 13 14 15 18 17 16 24 22]
Premiado [numConcurso=1510, premiacao=11, aposta= 01 02 03 04 05 11 12 13 14 15 23 07 18 09 19]
Premiado [numConcurso=1510, premiacao=11, aposta= 06 07 08 09 10 11 12 13 14 15 18 17 16 24 22]
Premiado [numConcurso=1511, premiacao=11, aposta= 06 07 08 09 10 21 22 23 24 25 05 11 13 04 02]
Premiado [numConcurso=1511, premiacao=11, aposta= 11 12 13 14 15 21 22 23 24 25 08 02 09 04 06]
Premiado [numConcurso=1513, premiacao=12, aposta= 06 07 08 09 10 11 12 13 14 15 18 17 16 24 22]
Premiado [numConcurso=1515, premiacao=11, aposta= 01 02 03 04 05 11 12 13 14 15 23 07 18 09 19]
Premiado [numConcurso=1516, premiacao=11, aposta= 11 12 13 14 15 16 17 18 19 20 09 10 22 23 24]
Premiado [numConcurso=1519, premiacao=11, aposta= 16 17 18 19 20 21 22 23 24 25 07 10 15 13 06]
Premiado [numConcurso=1521, premiacao=11, aposta= 01 02 03 04 05 11 12 13 14 15 23 07 18 09 19]
Premiado [numConcurso=1522, premiacao=12, aposta= 11 12 13 14 15 16 17 18 19 20 09 10 22 23 24]
Premiado [numConcurso=1523, premiacao=11, aposta= 06 07 08 09 10 16 17 18 19 20 23 21 24 03 05]
Premiado [numConcurso=1524, premiacao=11, aposta= 06 07 08 09 10 21 22 23 24 25 05 11 13 04 02]
Premiado [numConcurso=1525, premiacao=11, aposta= 01 02 03 04 05 06 07 08 09 10 25 15 18 14 19]
Premiado [numConcurso=1525, premiacao=12, aposta= 01 02 03 04 05 16 17 18 19 20 12 25 15 22 10]
Premiado [numConcurso=1526, premiacao=11, aposta= 06 07 08 09 10 21 22 23 24 25 05 11 13 04 02]
Premiado [numConcurso=1526, premiacao=11, aposta= 16 17 18 19 20 21 22 23 24 25 07 10 15 13 06]
Premiado [numConcurso=1527, premiacao=11, aposta= 01 02 03 04 05 06 07 08 09 10 25 15 18 14 19]
Premiado [numConcurso=1527, premiacao=11, aposta= 01 02 03 04 05 21 22 23 24 25 20 16 11 09 10]
Premiado [numConcurso=1528, premiacao=11, aposta= 01 02 03 04 05 21 22 23 24 25 20 16 11 09 10]
Premiado [numConcurso=1528, premiacao=11, aposta= 06 07 08 09 10 16 17 18 19 20 23 21 24 03 05]
Premiado [numConcurso=1528, premiacao=11, aposta= 06 07 08 09 10 21 22 23 24 25 05 11 13 04 02]
Premiado [numConcurso=1530, premiacao=11, aposta= 11 12 13 14 15 16 17 18 19 20 09 10 22 23 24]
Premiado [numConcurso=1531, premiacao=11, aposta= 01 02 03 04 05 11 12 13 14 15 23 07 18 09 19]
Premiado [numConcurso=1538, premiacao=11, aposta= 01 02 03 04 05 06 07 08 09 10 25 15 18 14 19]
Premiado [numConcurso=1538, premiacao=11, aposta= 01 02 03 04 05 11 12 13 14 15 23 07 18 09 19]
Premiado [numConcurso=1540, premiacao=11, aposta= 01 02 03 04 05 11 12 13 14 15 23 07 18 09 19]
Premiado [numConcurso=1540, premiacao=11, aposta= 11 12 13 14 15 16 17 18 19 20 09 10 22 23 24]
Premiado [numConcurso=1541, premiacao=11, aposta= 01 02 03 04 05 11 12 13 14 15 23 07 18 09 19]
Premiado [numConcurso=1544, premiacao=11, aposta= 11 12 13 14 15 21 22 23 24 25 08 02 09 04 06]
Premiado [numConcurso=1546, premiacao=11, aposta= 01 02 03 04 05 06 07 08 09 10 25 15 18 14 19]
Premiado [numConcurso=1547, premiacao=11, aposta= 01 02 03 04 05 06 07 08 09 10 25 15 18 14 19]
Premiado [numConcurso=1548, premiacao=11, aposta= 11 12 13 14 15 16 17 18 19 20 09 10 22 23 24]
Premiado [numConcurso=1549, premiacao=11, aposta= 01 02 03 04 05 21 22 23 24 25 20 16 11 09 10]
Premiado [numConcurso=1549, premiacao=11, aposta= 06 07 08 09 10 21 22 23 24 25 05 11 13 04 02]
Premiado [numConcurso=1553, premiacao=11, aposta= 11 12 13 14 15 21 22 23 24 25 08 02 09 04 06]
Premiado [numConcurso=1554, premiacao=12, aposta= 01 02 03 04 05 06 07 08 09 10 25 15 18 14 19]
Premiado [numConcurso=1556, premiacao=11, aposta= 01 02 03 04 05 16 17 18 19 20 12 25 15 22 10]
Premiado [numConcurso=1557, premiacao=11, aposta= 01 02 03 04 05 16 17 18 19 20 12 25 15 22 10]
Premiado [numConcurso=1557, premiacao=11, aposta= 01 02 03 04 05 21 22 23 24 25 20 16 11 09 10]
Premiado [numConcurso=1559, premiacao=11, aposta= 01 02 03 04 05 06 07 08 09 10 25 15 18 14 19]
Premiado [numConcurso=1559, premiacao=11, aposta= 06 07 08 09 10 16 17 18 19 20 23 21 24 03 05]
Premiado [numConcurso=1560, premiacao=11, aposta= 01 02 03 04 05 06 07 08 09 10 25 15 18 14 19]
Premiado [numConcurso=1561, premiacao=11, aposta= 16 17 18 19 20 21 22 23 24 25 07 10 15 13 06]
Premiado [numConcurso=1562, premiacao=11, aposta= 01 02 03 04 05 06 07 08 09 10 25 15 18 14 19]
Premiado [numConcurso=1562, premiacao=11, aposta= 01 02 03 04 05 11 12 13 14 15 23 07 18 09 19]
Premiado [numConcurso=1564, premiacao=11, aposta= 06 07 08 09 10 16 17 18 19 20 23 21 24 03 05]
Premiado [numConcurso=1565, premiacao=12, aposta= 06 07 08 09 10 11 12 13 14 15 18 17 16 24 22]
Premiado [numConcurso=1566, premiacao=11, aposta= 01 02 03 04 05 06 07 08 09 10 25 15 18 14 19]
Premiado [numConcurso=1566, premiacao=11, aposta= 01 02 03 04 05 11 12 13 14 15 23 07 18 09 19]
Premiado [numConcurso=1567, premiacao=11, aposta= 01 02 03 04 05 11 12 13 14 15 23 07 18 09 19]
Premiado [numConcurso=1569, premiacao=11, aposta= 11 12 13 14 15 21 22 23 24 25 08 02 09 04 06]
Premiado [numConcurso=1570, premiacao=11, aposta= 06 07 08 09 10 16 17 18 19 20 23 21 24 03 05]
Premiado [numConcurso=1571, premiacao=11, aposta= 01 02 03 04 05 11 12 13 14 15 23 07 18 09 19]
Premiado [numConcurso=1572, premiacao=11, aposta= 06 07 08 09 10 16 17 18 19 20 23 21 24 03 05]
Premiado [numConcurso=1572, premiacao=12, aposta= 06 07 08 09 10 21 22 23 24 25 05 11 13 04 02]
Premiado [numConcurso=1573, premiacao=12, aposta= 06 07 08 09 10 11 12 13 14 15 18 17 16 24 22]
Premiado [numConcurso=1573, premiacao=11, aposta= 11 12 13 14 15 16 17 18 19 20 09 10 22 23 24]
Premiado [numConcurso=1577, premiacao=11, aposta= 06 07 08 09 10 11 12 13 14 15 18 17 16 24 22]
Premiado [numConcurso=1577, premiacao=12, aposta= 06 07 08 09 10 16 17 18 19 20 23 21 24 03 05]
Premiado [numConcurso=1577, premiacao=11, aposta= 16 17 18 19 20 21 22 23 24 25 07 10 15 13 06]
---------------------RESUMO GERAL--------------------------------------
Resultado [Premios=[11=62, 12=10, 13=0, 14=0, 15=0], Qtde Premiados=72]
 

Se observarmos QUASE deu 11 em todos os concursos com apenas 10 jogos. 

 

Quando rodo para premiação acima de nove pontos, tenho:

 

---------------------RESUMO GERAL--------------------------------------
Resultado [ Premios=[09=262, 10=171, 11=62, 12=10, 13=0, 14=0, 15=0], Qtde Premiados=505]

 

Assim, tenho que visualizar uma forma de subir esses prêmios com 9 acertos (09=262) e os prêmios de 10 acertos (10=171) ambos para 11 acertos. Caso isso ocorra, as apostas teoricamente seriam viáveis.

 

Forte abraço !!!

 

Link to comment
Share on other sites

Ola Crazy Rabbit,

 

valeu pela postagem mas não uso planilhas por não ser bom em excel.

 

Na minha conferência não apareceu nenhum 13 e o número de 12 não bate com o seu. Vou verificar no meu código aqui para ver se não tem nada errado no conferidor.

 

Não gosto de filtros também porque excluir muitas possibilidades. Procuro um método que seja válido para todos os concurso não tendo a necessidade de análise dos concursos anteriores. 

 

Forte abraço !!!

Link to comment
Share on other sites

30 minutos atrás, Crazy Rabbit disse:

Olá Carlos Martins,

 

Como não acredito em nenhum filtro do mundo, nada funciona, provo com planilha abaixo,

sem nenhum esforço, sem nenhum estudo, sem digitar, do 1500 ao 1577:

 

1500 à 1577

 

69 c/ 11
07 c/ 12
01 c/ 13

 

REPETINDO, SEM ESFORÇO, SEM FILTROS, SEM IDEIAS MIRABOLANTES, SEM 3 PULINHOS,

SEM DIGITAR, SEM PENSAR, ABAIXO PLANILHA, PODE CONFERIR SORTEIO A SORTEIO,

 

Previsão das 10 Fixas(1.0).xlsm.zip

 

Esta planilha esta disponibilizada aqui em outro tópico em outra data para todos.

 

PROVANDO PORTANTO, QUE A LOTOFACIL, É SIMPLES, DÁ 15 E FICA FORA 10

60% PARA ACERTAR, 40% DE ERRO.

 

JÁ PROVEI NÃO ESTA VEZ, MAIS MILHARES DE VEZES, QUE O SEGREDO NÃO ESTÁ

EM IDEIAS MIRABOLANTES, IDEIAS FANTASIOSAS, IDEIAS IRREAIS, FILTROS MALUCOS,

(Não estou me referindo somente a você, mas a todos que não conseguem aceitar o jogo)

 

O SEGREDO ESTÁ EM EXCLUIR, EXCLUIR E EXCLUIR DAS AUSENTES,

MINHAS CENTENAS DE PLANILHAS ESTÃO EM 100% EXCLUSÃO, E OLHA QUE ELAS

TEM RESULTADOS SIGNIFICANTES.

 

EXPLICO, DESMEMBRA AS 15 E EXCLUÍ 3, 4 OU 5 DAS AUSENTES,

DÁ MUITOS CARTÕES, MAS É A FÓRMULA MAIS EFICIENTE DE CHEGAR AOS 15.

 

Um Abraço do Coelho,

 

Crazy Rabbit

 

Deixando a loteria de lado, se todos aceitassem as coisas como elas realmente são ainda estaríamos vivendo na idade da pedra. kkkkkkk 

 

"O impossível existe até que alguém duvide dele e prove o contrário."

 

(Albert Einstein)

 

  • Like 1
Link to comment
Share on other sites

9 minutos atrás, Crazy Rabbit disse:

Talvez, você não entendeu o que coloquei,

Filtros, Maloras, Macumbas, Pulinhos, Placas de Carro, nada funciona.

 

O que falei que para pegar 15, é de outra maneira, mas não falei que

é impossível acertar os 15 com 1 cartão com extrema sorte.

 

O que deixei claro e provei centenas de vezes, que todos os métodos

são totalmente inoperantes.

 

Sorte, Sim, 1 cartão, 15 pontos e ponto.

 

O que coloquei é que na incapacidade de fazer 15 pontos, tentamos

achar uma maneira ilusória de se manter no jogo, inventam métodos,

magias, livros negros, filtros malucos, gráficos sem noção, mas entendo,

sem ser capaz de atingir os 15, nos apegamos a atributos diversos para

apenas para justificar nossa incapacidade de acertar.

 

Ser humano é assim (Ainda Bem) persevera, mas tem coisas que são

impossíveis de atingir sem a Grande Sorte, O Segundo, O Minuto, A Hora e

o Dia de Acertar.

 

Temos 60%, podemos melhorar para uns 80%, mas vamos precisar sempre

de 20% de sorte.

 

Crazy Rabbit

 

Muito pelo contrário, compreendi perfeitamente o que vc falou, o que fiz foi apenas fazer uma comparação entre aceitar e pesquisar.

  • Like 1
Link to comment
Share on other sites

8 horas atrás, Carlos Martins disse:

Olá Phabio Junior,

 

Não. O meu desejo é fazer uma combinação de jogos que me garanta em 100% um acerto de 50% de minhas apostas com prêmios de 11 acertos. Acredito que meus jogos ficariam entre 1000 a 5000 combinações (intervalo ótimo). Com isso conseguiria registrar os jogos.

 

Forte Abraço !!!

Não entendi!

 

Você é o Bruno cintra?

Link to comment
Share on other sites

13 horas atrás, phabio junior disse:

Não entendi!

 

Você é o Bruno cintra?

Não sou o Carlos Martins. Sou novato no fórum mais aposto a algum tempo em loterias principalmente Mega Sena, minha preferida. Agora estou realizando alguns estudos na Lotofácil por indicação de alguns colegas sobre o argumento das melhores probabilidades do que a Mega Sena.

 

Então Phabio junior minha ideia bateu após um prêmio de 14 acertos que tivemos. Que é da seguinte forma: 

 

Cada aposta na Lotofacil custa 2,00 reais e o prêmio mínimo que ela paga é o acerto de 11 pontos. Assim, se eu conseguir um grupo de jogos que me garanta 100% que a metade (50%) dos jogos apostados eu tenha acertos de 11 pontos eu garantiria o retorno do investimento. Por exemplo:

 

 

Apostas: 1000 x 2,00 = 2.000,00 reais investido

Prêmio:   500 acertos com 11 pontos. Então, 500 x 4,00 = 2.000,00 reais

 

Logo, teria o investimento garantido e ainda estaria concorrendo aso prêmios de 12, 13, 14 e 15. Sei que não é uma tarefa fácil conseguir esse proporção, na verdade não sei se é possível ainda. Estou nas análises e tentativas. Isso não é nada de mirabolante ou mágico como muitos aqui acredita e sim apenas matemática. 

 

Sorte a todos.

 

Forte abraço !!!

Link to comment
Share on other sites

22 minutos atrás, Carlos Martins disse:

Não sou o Carlos Martins. Sou novato no fórum mais aposto a algum tempo em loterias principalmente Mega Sena, minha preferida. Agora estou realizando alguns estudos na Lotofácil por indicação de alguns colegas sobre o argumento das melhores probabilidades do que a Mega Sena.

 

Então Phabio junior minha ideia bateu após um prêmio de 14 acertos que tivemos. Que é da seguinte forma: 

 

Cada aposta na Lotofacil custa 2,00 reais e o prêmio mínimo que ela paga é o acerto de 11 pontos. Assim, se eu conseguir um grupo de jogos que me garanta 100% que a metade (50%) dos jogos apostados eu tenha acertos de 11 pontos eu garantiria o retorno do investimento. Por exemplo:

 

 

Apostas: 1000 x 2,00 = 2.000,00 reais investido

Prêmio:   500 acertos com 11 pontos. Então, 500 x 4,00 = 2.000,00 reais

 

Logo, teria o investimento garantido e ainda estaria concorrendo aso prêmios de 12, 13, 14 e 15. Sei que não é uma tarefa fácil conseguir esse proporção, na verdade não sei se é possível ainda. Estou nas análises e tentativas. Isso não é nada de mirabolante ou mágico como muitos aqui acredita e sim apenas matemática. 

 

Sorte a todos.

 

Forte abraço !!!

Talvez sim, talvez não... Quem sabe você consegue essa façanha.

 

Mas, pensei aqui sobre o que você comentou..

Se deseja 50℅ de retorno na pior das hipóteses, aparti de um grupo de sua escolha é meio difícil encontrar essa proporções de acerto. 

 

Imagina se você consegue 10 linhas de 14 dezenas com 10 acertos cada?

 

 

Link to comment
Share on other sites

Em 26/10/2017 at 18:18, Carlos Martins disse:

Olá Bruno,

 

sou programador Java e estou estudando a Lotofacil para ver se consigo algo que garanta 50% das minhas apostas com prêmios de 11 acertos em 100% dos casos. Caso tenha algum material e possa me passar ficarei grato.

 

Abraço !!!

em java eu nao tenho,so em delphi,vb6,vba,powerbasic,c,c# neste sitem varios projetos de loterias

https://github.com/search?utf8=✓&q=lotofacil&type=

Link to comment
Share on other sites

1 hora atrás, Bruno Cintra disse:

conseguiu rodar, tenho outros codigos em excel de combinacoes que geram com filtros,se quiser te evio

Ola Bruno Cintra,

 

acho que agora com material postado mais esse link que você enviou acho que já consigo realizar algum trabalho por aqui. 

 

Assim que consegui alguma evolução compartilho com vocês.

 

Forte abraço !!!!

Link to comment
Share on other sites

Em 25/10/2017 at 12:56, oiregor disse:

me manda o que tiver... mesmo que seja lento... largo em servidores focados para isso...

veja que a ideia final é processar "algo" que seja de fácil acesso aos usuários leigos...

só precisará copiar e colar... ou quem sabe até a impressão de volantes em folha A4

veja que estou querendo aprender mais um pouco para agilizar o processamento...

gerar jogos aleatórios tenho vários... porém de forma "menos lenta" só com VBA...

e olha que acho bem rápido com as formulas que uso no excel kkkkkkkkkk

mais um codigo em vba para estudar,não faz fechamento,ele gera filtrando  soma,pares /impares,consecutivos

Option Explicit
Sub CombiEuroMillions()
Dim a As Byte, b As Byte, c As Byte, d As Byte, e As Byte
Dim lig As Long, col As Byte, macombi As Variant, i As Byte
Dim macol As New Collection, t() As Variant, x As Long, z As Byte
Dim l As Integer, tb(1 To 5) As Variant, s As String, di
Application.ScreenUpdating = True
'Création d'un objet "dictionary"
Set di = CreateObject("scripting.dictionary")
'"Résultats" est le nom de la feuille où se trouve les résultats.
'les numéros doivent être classés par ordre croissant et les tirages
'positionnés horizontalement à partir de la ligne 2.
'Stockage des résultats précédents dans un "dictionary"
With Sheets("Résultats")
    For l = 2 To .Range("A65536").End(xlUp).Row
        For c = 1 To 5
            tb(c) = .Cells(l, c).Value
        Next c
        s = Join(tb, ";")
        di.Add s, s
    Next l
End With
For a = 1 To 50
    For b = a + 1 To 50
        For c = b + 1 To 50
            For d = c + 1 To 50
                For e = d + 1 To 50
                    Cells(lig + 1, col + 1).Value = a & ";" & b & ";" & c & ";" & d & ";" & e
                    'Ecarte les combinaisons déjà sorties.
                    If di.Exists(CStr(Cells(lig + 1, col + 1).Value)) Then Cells(lig + 1, col + 1).ClearContents: GoTo fin
                    'décomposition de la combinaison dans un tableau
                    macombi = Split(Cells(lig + 1, col + 1), ";")
                    'Ecarte toutes les combinaisons comportant uniquement des numéros pairs ou impairs
                    If (macombi(0) Mod 2 = 0 And macombi(1) Mod 2 = 0 And macombi(2) Mod 2 = 0 And _
                        macombi(3) Mod 2 = 0 And macombi(4) Mod 2 = 0) Or _
                        (macombi(0) Mod 2 = 1 And macombi(1) Mod 2 = 1 And macombi(2) Mod 2 = 1 _
                        And macombi(3) Mod 2 = 1 And macombi(4) Mod 2 = 1) Then _
                            Cells(lig + 1, col + 1).ClearContents: GoTo fin
                    'Ecarte toutes les combinaisons d'une même dizaine
                    If (Int(macombi(0) / 10) = Int(macombi(1) / 10)) And (Int(macombi(0) / 10) = Int(macombi(2) / 10)) _
                        And (Int(macombi(0) / 10) = Int(macombi(3) / 10)) And (Int(macombi(0) / 10) = Int(macombi(4) / 10)) Then _
                            Cells(lig + 1, col + 1).ClearContents: GoTo fin
                    'Ecarte toutes les combinaisons ayant la même finale
                    For i = LBound(macombi) To UBound(macombi)
                        On Error Resume Next
                        macol.Add macombi(i) Mod 10, CStr(macombi(i) Mod 10)
                    Next i
                    On Error GoTo 0
                    If macol.Count = 1 Then Cells(lig + 1, col + 1).ClearContents: GoTo fin
                    'Ecarte toutes les combinaisons ayant un pas constant
                    If (macombi(1) - macombi(0)) = (macombi(2) - macombi(1)) And (macombi(1) - macombi(0)) _
                        = (macombi(3) - macombi(2)) And (macombi(1) - macombi(0)) = (macombi(4) - macombi(3)) Then _
                            Cells(lig + 1, col + 1).ClearContents: GoTo fin
                    'Ecarte toute les combinaisons dont la somme est inférieur à 52
                    If Int(macombi(0)) + Int(macombi(1)) + Int(macombi(2)) + Int(macombi(3)) + Int(macombi(4)) < 52 Then Cells(lig + 1, col + 1).ClearContents: GoTo fin
                    'Ecarte toutes les combinaisons dont au moins 3 numéros se suivent
                    For i = 1 To 3
                        If (macombi(i) - macombi(i - 1)) = 1 And (macombi(i + 1) - macombi(i)) = 1 Then _
                            Cells(lig + 1, col + 1).ClearContents: GoTo fin
                    Next i
                    lig = lig + 1
                    If lig = 65536 Then col = col + 1: lig = 0
fin:
                    Set macol = Nothing
                Next e
            Next d
        Next c
    Next b
Next a
ThisWorkbook.SaveAs ThisWorkbook.Path & "\CombiEuroMillionsFiltrées.xls"
Application.ScreenUpdating = True
End Sub

  • Thanks 1
Link to comment
Share on other sites

5 minutos atrás, DixieJoe disse:

oiregor,

 

Se for possível, poderia ter uma cópia de sua planilha usando esses códigos do Bruno Cintra?

 

Não sei mexer no Excel usando VBA.

 

Queria testar.

 

Obrigado

 

sim... com certeza... assim que acrescentar os filtros já estará aqui... sem qualquer trava, portanto é uso por própria conta e risco ehehehe

  • Like 1
Link to comment
Share on other sites

Navegendo achei este site, achei muito interessante, mas olhandos as formulas, chegou me da uma tristeza kkkkkk, mas segue i link, desejo que seja útil......

http://www.portalaction.com.br/series-temporais/481-introducao

Este é somente alguns assuntos, tem bastante coisa......

Não estou fazendo publicidade de nada, caso os moderadores acharem o contrário , por favor retirem minha publicação

 

Saúde e Sorte!!!!

 
Link to comment
Share on other sites

  • 1 month later...
Em 10/23/2017 at 12:39, DixieJoe disse:

Pitaco_certo!

 

Esta rotina está em Delphi (Pascal).

 

Count := 0; 
while x<>0 do begin 
    x := x and (x-1); 
    Inc(Count); 
end;

 

É exatamente isso que precisamos fazer (Em Assembly) para permitir usar In-Line dentro do Delphi.

 

O que ela faz:

 

1- Recebe um INTEGER (preferencialmente, no nosso caso, de 128 bits) onde cada bit estará SETADO em 1 se o valor correspondente existir.

Explicado melhor: cada BIT representa uma DEZENA nossa. No caso, vamos usar do Bit 0 até o Bit 99 = Dezena 1 até Dezena 100.

Inicializa um contador Count em 0 (vai armazenar a quantidade de BITS setados em 1.

Testa os bits, um por um, enquanto eles tiverem o valor de 1... É aí que está a BELEZA do código!!!! Só conta quando o valor estiver em 1, senão, simplesmente vai para o próximo bit com valor 1.

 

Depois te mando a rotina do AS em Assembler. Acho que ele conta diferente. Mas é super rápido também.

 

----

 

 

Outro ponto importante: nos Assemblers para processadores mais modernos, parece que já existe uma rotina no próprio Assembler que já faz isso.

 

Chama-se 

 

popcout

 

NÃO SEI COMO USAR ISSO, INFELIZMENTE....

 

----------------

 

Dixie, é muito simples, o algorítmo do Uros pode ser traduzido dessa forma em assembly inline:

 

int x;
int Count ;

 

asm {
    mov eax, x
    popcnt Count , eax
}

 

Para variáveis x64, troque o eax por rax (registrador 64)

 

A instrução popcnt é suportada em processadores com tecnologia SSE4 ou superiores.

 

https://en.wikipedia.org/wiki/SSE4

 

Link to comment
Share on other sites

Guest Zangado
13 minutos atrás, bitwizardry disse:

Dixie, é muito simples, o algorítmo do Uros pode ser traduzido dessa forma em assembly inline:

int x;
int Count ;

 

asm {
    mov eax, x
    popcnt Count , eax
}

 

Para variáveis x64, troque o eax por rax (registrador 64)

A instrução popcnt é suportada em processadores com tecnologia SSE4 ou superiores.

 

https://en.wikipedia.org/wiki/SSE4

 

ola

vc parece um conhecedor da area

saberia dizer como ficaria os operadores binarios AND OR XOR e NOT em 64bit e se possível 128 bit?

 

Link to comment
Share on other sites

2 horas atrás, bitwizardry disse:

 

Dixie, é muito simples, o algorítmo do Uros pode ser traduzido dessa forma em assembly inline:

 

int x;
int Count ;

 

asm {
    mov eax, x
    popcnt Count , eax
}

 

Para variáveis x64, troque o eax por rax (registrador 64)

 

A instrução popcnt é suportada em processadores com tecnologia SSE4 ou superiores.

 

https://en.wikipedia.org/wiki/SSE4

 

Bitwizardry,

 

Muito obrigado pela dica.

A função in-line que me mandou está em C, mas posso adaptar para Delphi com facilidade.

 

Vou ver se consigo melhorar a velocidade da minha função contadora atual usando essa sua dica.

 

Minha máquina é 64 bits mas a versão do Delphi instalada é 32 bits... Acho que isso também se resolve.

 

Como meu notebook é relativamente antigo (mais de 5 anos, acredito), também preciso verificar se ele tem suporte para as instruções SSE4.

Também algo possível de checar por aqui sem grandes preocupações.

 

 

----

 

 

Peço desculpas, mas gostaria de aproveitar sua ajuda e lhe perguntar se é possível trabalhar com 128 bits (para aplicar as mesmas funções que vou adaptar com sua dica a variáveis Integer que ajudem a cobrir até 100 bits.).

 

Até 64 bits, acho que que não tenho problema de aprender a usar. Mas para loterias como Quina (80 bits), Timemania (80 bits) e Lotomania (100 bits) eu ainda não consegui entender como posso adaptar.

 

Hoje, utilizo Sets e posso tranquilamente trabalhar com 100 bits. 

Pensei em deixar todas as funções atuais usando SETS porque são rápidas. E pensei em criar uma função que transforme de SETS para Integer (diretamente até 64 bits - isso eu consigo fazer facilmente) e para dois Integers de 64 bits para valores que atendam até 100 bits... Isso para a rotina Contadora com POPCOUNT.

 

Nessa última parte, aceitaria sugestões e comentários sobre a melhor maneira de fazer isso e manter todo o restante em 64 bits.

 

Na verdade, e resumindo: preciso aprender uma maneira eficiente de converter de SETS para 2 Integer de 64 bits, contar separadamente e SOMAR os dois POPCOUNT.

Outra parte importante é uma função para Comparar 2 Integers (para valores maiores do que 64, claro)... Ou continuo comparando com SETS e apenas uso a rotina anterior para a contagem...

 

Mais uma vez, obrigado.

Link to comment
Share on other sites

Em 12/17/2017 at 18:48, edcronos2 disse:

ola

vc parece um conhecedor da area

saberia dizer como ficaria os operadores binarios AND OR XOR e NOT em 64bit e se possível 128 bit?

 

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.

 

Edited by bitwizardry
Link to comment
Share on other sites

Em 12/17/2017 at 21:41, DixieJoe disse:

Bitwizardry,

 

Muito obrigado pela dica.

A função in-line que me mandou está em C, mas posso adaptar para Delphi com facilidade.

 

Vou ver se consigo melhorar a velocidade da minha função contadora atual usando essa sua dica.

 

Minha máquina é 64 bits mas a versão do Delphi instalada é 32 bits... Acho que isso também se resolve.

 

Como meu notebook é relativamente antigo (mais de 5 anos, acredito), também preciso verificar se ele tem suporte para as instruções SSE4.

Também algo possível de checar por aqui sem grandes preocupações.

 

 

----

 

 

Peço desculpas, mas gostaria de aproveitar sua ajuda e lhe perguntar se é possível trabalhar com 128 bits (para aplicar as mesmas funções que vou adaptar com sua dica a variáveis Integer que ajudem a cobrir até 100 bits.).

 

Até 64 bits, acho que que não tenho problema de aprender a usar. Mas para loterias como Quina (80 bits), Timemania (80 bits) e Lotomania (100 bits) eu ainda não consegui entender como posso adaptar.

 

Hoje, utilizo Sets e posso tranquilamente trabalhar com 100 bits. 

Pensei em deixar todas as funções atuais usando SETS porque são rápidas. E pensei em criar uma função que transforme de SETS para Integer (diretamente até 64 bits - isso eu consigo fazer facilmente) e para dois Integers de 64 bits para valores que atendam até 100 bits... Isso para a rotina Contadora com POPCOUNT.

 

Nessa última parte, aceitaria sugestões e comentários sobre a melhor maneira de fazer isso e manter todo o restante em 64 bits.

 

Na verdade, e resumindo: preciso aprender uma maneira eficiente de converter de SETS para 2 Integer de 64 bits, contar separadamente e SOMAR os dois POPCOUNT.

Outra parte importante é uma função para Comparar 2 Integers (para valores maiores do que 64, claro)... Ou continuo comparando com SETS e apenas uso a rotina anterior para a contagem...

 

Mais uma vez, obrigado.

 

Dixie, não conheço nada de Delphi , mas se a classe sets do Delphi for idêntica ao bitset de C++, vc faz tudo isso com poucas linhas de código, observe o print:

Imaginei um resultado fictício da quina "01 02 03 79 80", setei os bits nas respectivas posições e realizei um popcount, conforme mostra o output

 

Para "partir" esse bitset em duas variáveis x64, antes de mais nada, crie as duas variáveis, "a" e "b", agora transcreva esse pseudocode:

 

a = 0;

b = 0;

 

para c = 0 até 79

         se c < 64 então

               se quina.test(c) = true então

                       a = a OR (1 << c)

               fim se

         senão

               se quina.test(c) = true então

                       b = b OR (1 << (c - 64))

                fim se

         fim se

fim para

 

Me diga se é isso mesmo que vc deseja.

 

print.png

Edited by bitwizardry
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...