Jump to content

Software Dixie.


wesleybobato

Recommended Posts

13 minutos atrás, Sphgf disse:

 

p.s. será que tenho eu, algo mais a acrescentar ?! rsrsrs

 

 

 

Muitíssimo obrigado por compartilhar tudo isto !!!

 

Eu virei a noite pesquisando o assunto pelo google...

também aqui li vários post, inclusive seus, do DixieJoe, etc...

 

COM CERTEZA tem muito a acrescentar,

Podemos conversar via Skype ???

 

  • Like 1
Link to comment
Share on other sites

 

Olá Dois,

não tenho Skype e pretendo não usar, pelo seguinte motivo:

 

Não tenho respostas rápidas de bate pronto, sou "meio lerdo" pra essas conversas, desculpe minha sinceridade, mas vamos colocando as pesquisas pelo caminho, dai documentado fica a disposição inclusive pro "resto do mundo". Via skype a pesquisa fica restrita e esse não é mais meu foco.

 

saudações,

 

Sphgf

4 minutos atrás, dois disse:

 

 

Muitíssimo obrigado por compartilhar tudo isto !!!

 

Eu virei a noite pesquisando o assunto pelo google...

também aqui li vários post, inclusive seus, do DixieJoe, etc...

 

COM CERTEZA tem muito a acrescentar,

Podemos conversar via Skype ???

 

 

Link to comment
Share on other sites

Agora, Sphgf disse:

 

Olá Dois,

não tenho Skype e pretendo não usar, pelo seguinte motivo:

 

Não tenho respostas rápidas de bate pronto, seu "meio lerdo" pra essas conversas, desculpe minha sinceridade, mas vamos colocando as pesquisas pelo caminho, dai documentado fica a disposição inclusive pro "resto do mundo". Via skype a pesquisa fica restrita e esse não é mais meu foco.

 

saudações,

 

Sphgf

 

 

 

Creio que meu comportamento, minhas postagens, tópicos, downloads

corroboram na minha afirmativa que o objetivo é produtividade, ou seja,

agilizar os trabalhos, pois digitar me toma tempo precioso.

 

Todavia respeito sua postura, então te convido a abrirmos um tópico

e lá compartilhamos o que for possível, pode ser ?

 

 

 

 

 

  • Like 1
Link to comment
Share on other sites

8 minutos atrás, Sphgf disse:

Olá Dois,

não tenho Skype e pretendo não usar, pelo seguinte motivo:

 

3 minutos atrás, dois disse:

Todavia respeito sua postura, então te convido a abrirmos um tópico

e lá compartilhamos o que for possível, pode ser ?

 

 

 

 

Podemos também ressuscitar o tópico do -W6-

 

 

  • Like 1
Link to comment
Share on other sites

Pessoal, boa noite. Demorei para dar o ar da graça aqui por falta de tempo. Estou bem enrolado com um trabalho da escola, mas enfim.
Bom, vamos por parte.


para gerar combinaçoes de até 50c6 (mega-sena) , incluindo 80c5(quina) e claro, a nossa querida Lotofacil (25c15), segue alguns códicos que usei e aprimorei ao longo do tempo.

 

C++ / C

________________________________________________

#include <iostream>
using namespace std;
#include <math.h>
#include <string>
#include <stdlib.h>
#include <fstream>

long long int count;

void r_nCr(const unsigned long long int &startNum, const unsigned long long int &bitVal, const unsigned long long int &testNum)
{
    unsigned long long int n = (startNum - bitVal) << 1;
    n += bitVal ? 1 : 0;

    for (unsigned long long int i = log2(testNum) + 1; i > 0; i--) 
        cout << (n >> (i - 1) & 1);
        cout << endl;
        count++;

    if (!(n & testNum) && n != startNum)
        r_nCr(n, bitVal, testNum);

    if (bitVal && bitVal < testNum)
        r_nCr(startNum, bitVal >> 1, testNum);
}

void cria_combinacao_binaria_nCn(int n1, int n2) 
{

        string bin = "";
        for (long long int i = 0; i < n1; i++) {
            if (i < (n1 - n2)) {
                bin = bin + "0";
            } else {
                bin = bin + "1";
            }
        }


        //*
        string bin2 = "";
        for (long long int i = 0; i < n2; i++) {
            if (i == 0) {
               bin2 = bin2 + "1";
            } else {
                bin2 =  bin2 + "0";
            }
        }

      

        string bin3 = "";
        for (long long int i = 0; i < n1; i++) {
            if (i == 0) {
                bin3 =  bin3 + "1";
            } else {
                bin3 = bin3 + "0";
            }
        }
        
        const char *cstr =  bin.c_str();
        const char *cstr1 = bin2.c_str();
        const char *cstr2 = bin3.c_str();
        

        
        unsigned long long int first= strtoll(cstr, NULL, 2);
        unsigned long long int second= strtoll(cstr1, NULL, 2);
        unsigned long long int third= strtoll(cstr2, NULL, 2);
  
        
        r_nCr(first, second, third); 

}

int main(int argc, char** argv) {
    int n1 = 25;
    int n2 = 15;
    cout << "qtd de combinacoes: " << n1 << "C" << n2 << endl;
    cout << "*******************************" << endl;
    cria_combinacao_binaria_nCn(n1,n2);// nCr
    cout << count << endl ;
    cout << "*******************************" << endl ;
    return 0;
}
____________________________________________________

Python (3.0 ou superior)

____________________________________________________

import itertools
import time

#tempo do inicio
ini = time.time()

# Open a file
#fo = open("c:\\marco\\foo.csv", "w+")


print("Inicio do processo de criacao de combinacoes")
count=0
for x in itertools.combinations(range(60), 6):
   count+=1
   #print(x)
   #fo.write(str(x) + "\n")
print(count)
print("Fim do processo de criacao de combinacoes")
fim = time.time()

# Close opend file
#fo.close()


print("tempo de processamento total: ", fim-ini)
_______________________________________________________________

Esses dois códigos são muito rapidos para geração, tanto binária quanto para geração normal (lexicográfica). Mas enfim, vejo que muita gente gosta de usar o vba do excel. Em vez de gerar pelo proprio VBA, minha dica é realizar a chamada do python pelo seguinte comando

 

RetVal = Shell("<caminho completo do  python.exe> " & "ActiveWorkBook.Path & \<python nome do script python>")

Claro, o comando é esse, mas é bom estudar e customizar em cada projeto. Uma dica que dou por estar trabalhando com isso já a um tempo, tentem nao usar a memoria ram sempre. Usem o poder que o disco rigido dá de liberar memória.

 

Enfim, trabalho com JAVA como linguagem mae para meus estudos, mas sempre que preciso e vejo mais recursos em outras nao deixo de buscar. . Ainda nao cheguei em nada conclusivo, a nao ser que temos que usar sempre os 25 números. Enfim, venho acompanhando sempre os ensinamentos do @Sphgf, do @DixieJoe, do @dois, do @edcronos / @edcronos2.Sei que podemos logo matematicamente fechar o cerco.

 

 

Sobre velocidade de geracao, estou agora indo para o assembly e fortran (em breve já posto o código para os entusiastas), mas digo que esse nao será o caminho. Acredito que intersecções e conjuntos logo farão o resultado matematicamente aparecer.  


Enfim. vamos pra cima pessoal

Sucesso!!!

  • Like 2
Link to comment
Share on other sites

39 minutos atrás, Marco Silva disse:

Pessoal, boa noite. Demorei para dar o ar da graça aqui por falta de tempo. Estou bem enrolado com um trabalho da escola, mas enfim.
Bom, vamos por parte.

 

 

 

Olá,

 

FANTÁSTICO !!!

Muitíssimo obrigado pela colaboração !!!

Já está devidamente catalogado na minha biblioteca !!!

Concordo plenamente com estas suas palavras !!!

 

A propósito, você já chegou a fazer algum comparativo

de performance PYTHON x ASSEMBLY ???

 

 

Um abraço !

Link to comment
Share on other sites

Pessoal, boa noite. Demorei para dar o ar da graça aqui por falta de tempo. Estou bem enrolado com um trabalho da escola, mas enfim.
Bom, vamos por parte.

para gerar combinaçoes de até 50c6 (mega-sena) , incluindo 80c5(quina) e claro, a nossa querida Lotofacil (25c15), segue alguns códicos que usei e aprimorei ao longo do tempo.
 
C++ / C
________________________________________________
#include
using namespace std;
#include
#include
#include
#include
long long int count;
void r_nCr(const unsigned long long int &startNum, const unsigned long long int &bitVal, const unsigned long long int &testNum)
{
    unsigned long long int n = (startNum - bitVal)     n += bitVal ? 1 : 0;
    for (unsigned long long int i = log2(testNum) + 1; i > 0; i--) 
        cout > (i - 1) & 1);
        cout         count++;
    if (!(n & testNum) && n != startNum)
        r_nCr(n, bitVal, testNum);
    if (bitVal && bitVal         r_nCr(startNum, bitVal >> 1, testNum);
}
void cria_combinacao_binaria_nCn(int n1, int n2) 
{
        string bin = "";
        for (long long int i = 0; i             if (i                 bin = bin + "0";
            } else {
                bin = bin + "1";
            }
        }

        //*
        string bin2 = "";
        for (long long int i = 0; i             if (i == 0) {
               bin2 = bin2 + "1";
            } else {
                bin2 =  bin2 + "0";
            }
        }
      
        string bin3 = "";
        for (long long int i = 0; i             if (i == 0) {
                bin3 =  bin3 + "1";
            } else {
                bin3 = bin3 + "0";
            }
        }
        
        const char *cstr =  bin.c_str();
        const char *cstr1 = bin2.c_str();
        const char *cstr2 = bin3.c_str();
        
        
        unsigned long long int first= strtoll(cstr, NULL, 2);
        unsigned long long int second= strtoll(cstr1, NULL, 2);
        unsigned long long int third= strtoll(cstr2, NULL, 2);
  
        
        r_nCr(first, second, third); 
}
int main(int argc, char** argv) {
    int n1 = 25;
    int n2 = 15;
    cout     cout     cria_combinacao_binaria_nCn(n1,n2);// nCr
    cout     cout     return 0;
}
____________________________________________________
Python (3.0 ou superior)
____________________________________________________
import itertools
import time
#tempo do inicio
ini = time.time()
# Open a file
#fo = open("c:\\marco\\foo.csv", "w+")

print("Inicio do processo de criacao de combinacoes")
count=0
for x in itertools.combinations(range(60), 6):
   count+=1
   #print(x)
   #fo.write(str(x) + "\n")
print(count)
print("Fim do processo de criacao de combinacoes")
fim = time.time()
# Close opend file
#fo.close()

print("tempo de processamento total: ", fim-ini)
_______________________________________________________________
Esses dois códigos são muito rapidos para geração, tanto binária quanto para geração normal (lexicográfica). Mas enfim, vejo que muita gente gosta de usar o vba do excel. Em vez de gerar pelo proprio VBA, minha dica é realizar a chamada do python pelo seguinte comando
 
RetVal = Shell("<caminho completo do  python.exe> " & "ActiveWorkBook.Path & \<python nome do script python>")

Claro, o comando é esse, mas é bom estudar e customizar em cada projeto. Uma dica que dou por estar trabalhando com isso já a um tempo, tentem nao usar a memoria ram sempre. Usem o poder que o disco rigido dá de liberar memória.
 
Enfim, trabalho com JAVA como linguagem mae para meus estudos, mas sempre que preciso e vejo mais recursos em outras nao deixo de buscar. . Ainda nao cheguei em nada conclusivo, a nao ser que temos que usar sempre os 25 números. Enfim, venho acompanhando sempre os ensinamentos do @Sphgf, do @DixieJoe, do @dois, do @edcronos / @edcronos2.Sei que podemos logo matematicamente fechar o cerco.
 
 
Sobre velocidade de geracao, estou agora indo para o assembly e fortran (em breve já posto o código para os entusiastas), mas digo que esse nao será o caminho. Acredito que intersecções e conjuntos logo farão o resultado matematicamente aparecer.  

Enfim. vamos pra cima pessoal

Sucesso!!!



Interessante estas rotinas. Eu utilizava php+threads, porém o processamento girava em torno de 1 dia. Hoje não vejo mais razões pra obter todas as possibilidades (Quina no caso)

Sent from my XT1563 using Tapatalk

Link to comment
Share on other sites

1 hora atrás, Marco Silva disse:

Pessoal, boa noite. Demorei para dar o ar da graça aqui por falta de tempo. Estou bem enrolado com um trabalho da escola, mas enfim.
Bom, vamos por parte.


para gerar combinaçoes de até 50c6 (mega-sena) , incluindo 80c5(quina) e claro, a nossa querida Lotofacil (25c15), segue alguns códicos que usei e aprimorei ao longo do tempo.

 

C++ / C

________________________________________________

#include <iostream>
using namespace std;
#include <math.h>
#include <string>
#include <stdlib.h>
#include <fstream>

long long int count;

void r_nCr(const unsigned long long int &startNum, const unsigned long long int &bitVal, const unsigned long long int &testNum)
{
    unsigned long long int n = (startNum - bitVal) << 1;
    n += bitVal ? 1 : 0;

    for (unsigned long long int i = log2(testNum) + 1; i > 0; i--) 
        cout << (n >> (i - 1) & 1);
        cout << endl;
        count++;

    if (!(n & testNum) && n != startNum)
        r_nCr(n, bitVal, testNum);

    if (bitVal && bitVal < testNum)
        r_nCr(startNum, bitVal >> 1, testNum);
}

void cria_combinacao_binaria_nCn(int n1, int n2) 
{

        string bin = "";
        for (long long int i = 0; i < n1; i++) {
            if (i < (n1 - n2)) {
                bin = bin + "0";
            } else {
                bin = bin + "1";
            }
        }


        //*
        string bin2 = "";
        for (long long int i = 0; i < n2; i++) {
            if (i == 0) {
               bin2 = bin2 + "1";
            } else {
                bin2 =  bin2 + "0";
            }
        }

      

        string bin3 = "";
        for (long long int i = 0; i < n1; i++) {
            if (i == 0) {
                bin3 =  bin3 + "1";
            } else {
                bin3 = bin3 + "0";
            }
        }
        
        const char *cstr =  bin.c_str();
        const char *cstr1 = bin2.c_str();
        const char *cstr2 = bin3.c_str();
        

        
        unsigned long long int first= strtoll(cstr, NULL, 2);
        unsigned long long int second= strtoll(cstr1, NULL, 2);
        unsigned long long int third= strtoll(cstr2, NULL, 2);
  
        
        r_nCr(first, second, third); 

}

int main(int argc, char** argv) {
    int n1 = 25;
    int n2 = 15;
    cout << "qtd de combinacoes: " << n1 << "C" << n2 << endl;
    cout << "*******************************" << endl;
    cria_combinacao_binaria_nCn(n1,n2);// nCr
    cout << count << endl ;
    cout << "*******************************" << endl ;
    return 0;
}
____________________________________________________

Python (3.0 ou superior)

____________________________________________________

import itertools
import time

#tempo do inicio
ini = time.time()

# Open a file
#fo = open("c:\\marco\\foo.csv", "w+")


print("Inicio do processo de criacao de combinacoes")
count=0
for x in itertools.combinations(range(60), 6):
   count+=1
   #print(x)
   #fo.write(str(x) + "\n")
print(count)
print("Fim do processo de criacao de combinacoes")
fim = time.time()

# Close opend file
#fo.close()


print("tempo de processamento total: ", fim-ini)
_______________________________________________________________

Esses dois códigos são muito rapidos para geração, tanto binária quanto para geração normal (lexicográfica). Mas enfim, vejo que muita gente gosta de usar o vba do excel. Em vez de gerar pelo proprio VBA, minha dica é realizar a chamada do python pelo seguinte comando

 


RetVal = Shell("<caminho completo do  python.exe> " & "ActiveWorkBook.Path & \<python nome do script python>")

Claro, o comando é esse, mas é bom estudar e customizar em cada projeto. Uma dica que dou por estar trabalhando com isso já a um tempo, tentem nao usar a memoria ram sempre. Usem o poder que o disco rigido dá de liberar memória.

 

Enfim, trabalho com JAVA como linguagem mae para meus estudos, mas sempre que preciso e vejo mais recursos em outras nao deixo de buscar. . Ainda nao cheguei em nada conclusivo, a nao ser que temos que usar sempre os 25 números. Enfim, venho acompanhando sempre os ensinamentos do @Sphgf, do @DixieJoe, do @dois, do @edcronos / @edcronos2.Sei que podemos logo matematicamente fechar o cerco.

 

 

Sobre velocidade de geracao, estou agora indo para o assembly e fortran (em breve já posto o código para os entusiastas), mas digo que esse nao será o caminho. Acredito que intersecções e conjuntos logo farão o resultado matematicamente aparecer.  


Enfim. vamos pra cima pessoal

Sucesso!!!

 

Revirando papers "mofados" encontrei um que talvez ajude no Minimal overlapping algorithm pg 188 ou 155 baixe a partir do endereço: http://dip.sun.ac.za/~vuuren/Theses/Grundlingh.pdf

Não sou programador então Nintendo de programação...

 

saudações,

 

Sphgf

  • Like 1
Link to comment
Share on other sites

1 hora atrás, Marco Silva disse:

Pessoal, boa noite. Demorei para dar o ar da graça aqui por falta de tempo. Estou bem enrolado com um trabalho da escola, mas enfim.
Bom, vamos por parte.


para gerar combinaçoes de até 50c6 (mega-sena) , incluindo 80c5(quina) e claro, a nossa querida Lotofacil (25c15), segue alguns códicos que usei e aprimorei ao longo do tempo.

 

C++ / C

________________________________________________

#include <iostream>
using namespace std;
#include <math.h>
#include <string>
#include <stdlib.h>
#include <fstream>

long long int count;

void r_nCr(const unsigned long long int &startNum, const unsigned long long int &bitVal, const unsigned long long int &testNum)
{
    unsigned long long int n = (startNum - bitVal) << 1;
    n += bitVal ? 1 : 0;

    for (unsigned long long int i = log2(testNum) + 1; i > 0; i--) 
        cout << (n >> (i - 1) & 1);
        cout << endl;
        count++;

    if (!(n & testNum) && n != startNum)
        r_nCr(n, bitVal, testNum);

    if (bitVal && bitVal < testNum)
        r_nCr(startNum, bitVal >> 1, testNum);
}

void cria_combinacao_binaria_nCn(int n1, int n2) 
{

        string bin = "";
        for (long long int i = 0; i < n1; i++) {
            if (i < (n1 - n2)) {
                bin = bin + "0";
            } else {
                bin = bin + "1";
            }
        }


        //*
        string bin2 = "";
        for (long long int i = 0; i < n2; i++) {
            if (i == 0) {
               bin2 = bin2 + "1";
            } else {
                bin2 =  bin2 + "0";
            }
        }

      

        string bin3 = "";
        for (long long int i = 0; i < n1; i++) {
            if (i == 0) {
                bin3 =  bin3 + "1";
            } else {
                bin3 = bin3 + "0";
            }
        }
        
        const char *cstr =  bin.c_str();
        const char *cstr1 = bin2.c_str();
        const char *cstr2 = bin3.c_str();
        

        
        unsigned long long int first= strtoll(cstr, NULL, 2);
        unsigned long long int second= strtoll(cstr1, NULL, 2);
        unsigned long long int third= strtoll(cstr2, NULL, 2);
  
        
        r_nCr(first, second, third); 

}

int main(int argc, char** argv) {
    int n1 = 25;
    int n2 = 15;
    cout << "qtd de combinacoes: " << n1 << "C" << n2 << endl;
    cout << "*******************************" << endl;
    cria_combinacao_binaria_nCn(n1,n2);// nCr
    cout << count << endl ;
    cout << "*******************************" << endl ;
    return 0;
}
____________________________________________________

Python (3.0 ou superior)

____________________________________________________

import itertools
import time

#tempo do inicio
ini = time.time()

# Open a file
#fo = open("c:\\marco\\foo.csv", "w+")


print("Inicio do processo de criacao de combinacoes")
count=0
for x in itertools.combinations(range(60), 6):
   count+=1
   #print(x)
   #fo.write(str(x) + "\n")
print(count)
print("Fim do processo de criacao de combinacoes")
fim = time.time()

# Close opend file
#fo.close()


print("tempo de processamento total: ", fim-ini)
_______________________________________________________________

Esses dois códigos são muito rapidos para geração, tanto binária quanto para geração normal (lexicográfica). Mas enfim, vejo que muita gente gosta de usar o vba do excel. Em vez de gerar pelo proprio VBA, minha dica é realizar a chamada do python pelo seguinte comando

 


RetVal = Shell("<caminho completo do  python.exe> " & "ActiveWorkBook.Path & \<python nome do script python>")

Claro, o comando é esse, mas é bom estudar e customizar em cada projeto. Uma dica que dou por estar trabalhando com isso já a um tempo, tentem nao usar a memoria ram sempre. Usem o poder que o disco rigido dá de liberar memória.

 

Enfim, trabalho com JAVA como linguagem mae para meus estudos, mas sempre que preciso e vejo mais recursos em outras nao deixo de buscar. . Ainda nao cheguei em nada conclusivo, a nao ser que temos que usar sempre os 25 números. Enfim, venho acompanhando sempre os ensinamentos do @Sphgf, do @DixieJoe, do @dois, do @edcronos / @edcronos2.Sei que podemos logo matematicamente fechar o cerco.

 

 

Sobre velocidade de geracao, estou agora indo para o assembly e fortran (em breve já posto o código para os entusiastas), mas digo que esse nao será o caminho. Acredito que intersecções e conjuntos logo farão o resultado matematicamente aparecer.  


Enfim. vamos pra cima pessoal

Sucesso!!!

Olá Marco Silva,

 

Agradeço sua citação, mas sou apenas um hobbista que estuda o assunto há muitos anos e teve que aprender a programar "pro gasto" apenas. Só para estudar as loterias até hoje. E acabei ficando, por enquanto, no Delphi. (Object PASCAL).

 

Também agradeço os exemplos de código acima. Espero retribuir com alguma coisa em breve.

 

Tenho uns códigos em Assembler que adquiri há alguns anos do Stefanovic. Acho que ele tem o software mais rápido do mundo para gerar e filtrar jogos (pelo menos do que vi até hoje). Ele gera mais de 300.000.000 de linhas por segundo. Aplicando filtros, reduz pouca coisa. Tudo em Assembler, junto com PowerBasic.

Tentei aprender mas desisti. Achei complicado. Pegue aqui. Vou deixar por uns dias.

 

Quando tiver alguma rotina genérica (que trabalhe em Assembler para gerar e/ou FILTRAR jogos para as nossas loterias - com jogos de 5,6,10 e 50 dezenas) gostaria muito de conhecer e ver se consigo adaptar para minhas funções. Principalmente para FILTRAR. Pensei em adaptar, no futuro (quando tiver a idéia de como fazer em Assembler), pelo menos a função que utilizo para filtrar. Lembro que hoje está no Delphi.

Se quiser ver o modelo que utilizo, posso preparar uma cópia da função para você.

 

https://www.dropbox.com/sh/9t6uvwt89r24zsw/AAD5daxn-hczey-lGN60l_MQa?dl=1

 

Vale a pena ver os programas executáveis de exemplo e abrir o zip com os fontes que comprei dele.

 

Grande abraço e, mais uma vez, obrigado.

 

Vitor

 

 

  • Like 2
Link to comment
Share on other sites

Marco Silva,

 

Estou começando a aprender um pouco sobre Python.

Simplesmente carreguei sua rotina para geração das combinações da Megasena e executei. Fez em 11.8 segundos no meu computador.

 

Mas não consegui entender se ele gravou. E, se gravou, onde grava? Ainda não sei "achar" isso.

Qual o nome que ele grava, caso positivo.

 

Parabéns! Se ele estiver gravando ficou bem rápido em Python. Aliás... MUITO RÁPIDO pelos padrões a que estou acostumado com o Delphi.

 

Em qual linha do programa eu enxergo onde ele grava? E qual o nome do arquivo?

  • Like 1
Link to comment
Share on other sites

1 hora atrás, DixieJoe disse:

 

Simplesmente carreguei sua rotina para geração das combinações da Megasena e executei. Fez em 11.8 segundos no meu computador.

 

 

 

Muito bom mesmo !!!

 

Meu código de Aprendiz Aluno em C

com a gravação do arquivo txt em disco

demandou +-36 segundos.

 

Um abraço !

  • Like 1
Link to comment
Share on other sites

Guest Zangado
2 horas atrás, DixieJoe disse:

Em qual linha do programa eu enxergo onde ele grava? E qual o nome do arquivo?

acho que nessa
#fo = open("c:\\marco\\foo.csv", "w+")

 

#fo é o arquivo criado em csv  que vai sendo modificado durante o codigo

 

 #fo.write(str(x) + "\n")

 

mas ainda não sei a necessidade de se criar combinações tão rapido se no final oq se quer são pouco jogos que sejam campeões

o mais dificil fica na filtragem

 

@Marco Silva

eu não mexo com esse tipo de arquivo, prefiro dividir por padrões

meu interesse no momento seria comparação binaria de 128bits e contagem dos bits de maneira rapida e sem loop

 

Edited by Zangado
Link to comment
Share on other sites

5 horas atrás, edcronos2 disse:

acho que nessa
#fo = open("c:\\marco\\foo.csv", "w+")

 

#fo é o arquivo criado em csv  que vai sendo modificado durante o codigo

 

 #fo.write(str(x) + "\n")

 

mas ainda não sei a necessidade de se criar combinações tão rapido se no final oq se quer são pouco jogos que sejam campeões

o mais dificil fica na filtragem

 

@Marco Silva

eu não mexo com esse tipo de arquivo, prefiro dividir por padrões

meu interesse no momento seria comparação binaria de 128bits e contagem dos bits de maneira rapida e sem loop

 

edcronos2 e MarcoSilva

 

A questão é que no meu sistema não gerou esse arquivo. Já procurei e não tem mesmo.

 

Pode ser que seja necessário mais alguma coisa. Depois o MarcoSilva pode nos dar uma sugestão.

 

Gostei do Python. Mas ainda é grego pra mim.

 

-------

 

edcronos2,

 

Você tem razão: pra mim também a parte mais demorada fica nas filtragens. Dependendo do tipo de filtro pode ser importante ter rotinas muito rápidas. Aí é que temos o gargalo.

Link to comment
Share on other sites

20 horas atrás, Sphgf disse:

A pergunta que pode parecer óbvia é:

Qual das três opções contém a maior % de fechamento para 11,12,13 e 14 se 15 ?

 

Vamos utilizar a 1a opção (como teste).

A= 1; 2; 3. (a1,a2,a3)

B=(4,5,6,7,8,9); (10,11,12,13,14,15); (16,17,18,19,20,21). (b1,b2,b3)

C=(22,23,24,25). (c)

 

Agora combinamos para obter as 3 linhas de 17 dezenas:

(a1;b1;b2;c) = 1-4-5-6-7-8-9-10-11-12-13-15-15-22-23-24-25

(a2;b1;b3;c) = 2-4-5-6-7-8-9-16-17-18-19-20-21-22-23-24-25

(a3;b2;b3;c) = 3-10-11-12-13-14-15-16-17-18-19-20-21-22-23-24-25

 

A próxima resposta. Quanto estas 3 linhas fecham ?

a 1a opção (Venn 1) analisada abaixo:

 

10 se 15 = 3.248.060/3.268.760 = 99,37%

11 se 15 = 2.584.974/3.268.760 = 79,08%

12 se 15 =    986.928/3.268.760 = 30,19%

13 se 15 =    165.688/3.268.760 =   5,07%

14 se 15 =      12.248/3.268.760 =   0,37%

15 se 15 =           288/3.268.760 =   0,01%

 

Não fiz as outras respostas...

 

 

Olá amigo forista Sphgf e demais interessados,

 

Confesso que até suas valiosas colaborações, tanto eu quanto nossas equipes

não nos aprofundamos nos Diagramas de Venn além do uso para representar

graficamente...

 

Desde ontem tenho me empenhado em aprender, então não tenho como colaborar

tecnicamente e/ou academicamente; Entretanto, há algo "estranho" nas linhas supracitadas,

pois a dezena 15 está em duplicidade na LINHA 1...

 

não deveria ser a dezena 14 na posição 12 da LINHA 1 ???

 

 

Um abraço !

  • Like 1
Link to comment
Share on other sites

Bom dia Dois e foristas,

bom pelo menos tenho algo mais a acrescentar...

"correções !! "  rsrsrs

 

Corrigi a dezena repetida e obviamente como usei o famoso recurso técnico "control-c control-v" os valores percentuais também foram corrompidos pois havia ficado 2 linhas de 17 dezenas e o software por default quando há dezena repetida considera apenas 1 vez, logo havia uma linha de 16 dezenas  no processo de filtragem já corrigido o post e os valores e também fiz o loop com a opção Venn2 que demonstrou que a 2a opção é pior do que a primeira.

 

A planilha e a imagem estão no post anterior referido, e claro em breve não poderei editá-lo.

 

obrigado,

 

saudaçõs,

 

Sphgf

Link to comment
Share on other sites

Guest Zangado

@DixieJoe

para filtrar rapidamente se pode usar comparadores logicos em cima de bit

mas só ´funciona até 32 bits no vba é long no seu é intenger

 

para contar os acertos tem algumas instruções que dependem do processador e linguagem e ou até da placa de video usada

fora isso seria loop , mas mesmo assim melhora bem a velocidade

 

para mim que não gosto da loto facil não achei aplicação,

mas vou ver se faço por conjuntos

 

@dois e @Sphgf nós já fazemos uso dessas logicas em nossos testes e filtros

veja bem, quando se pega uma sequencia e compara com um rsultado ou uma outra sequencia para separar os acertos é logica de conjunto estamos separando oq pertence aos 2 conjunto, se aplicarmos o resultado em outra combinação vamos separar oq pertence aos 3 conjuntos

tbm se pode aplica comparador xor para filtrar os valores exclusivos, no caso os que não são compartilhados 

o restante caem no grande conjunto da incerteza do que vai ser sorteado

 

 

 

 

Link to comment
Share on other sites

11 horas atrás, Sphgf disse:

 

Revirando papers "mofados" encontrei um que talvez ajude no Minimal overlapping algorithm pg 188 ou 155 baixe a partir do endereço: http://dip.sun.ac.za/~vuuren/Theses/Grundlingh.pdf

Não sou programador então Nintendo de programação...

 

saudações,

 

Sphgf

@Sphgf, muito obrigado pela literatura. É muita coisa, vou digerir logo mais, assim que acabar um trabalho escolar que tenho pra fazer.

 

@DixieJoe, muito obrigado pelo material disponibilizado. Porem, ainda vou estudar. Uma breve olhada e me pareceu meio que falcatrua, uma vez que o calculo de quantidade total é rapido para fazer em qualquer sistema (da pra usar o triangulo de pascal para fazer isso), mas agora a geraçao de sequencias em disco é mais ou menos o mesmo tempo que os algoritimos mostrados levamo. mas é cedo para qualquer conclusao. Para sanar as suas  duvidas, fiz duas variaçoes em python pra todos. (melhoradas no output)
uma gera de forma lexicográfica normal:

 

1;2;3

1;2;4

1;2;5, etc..

 

PYTHON GERACAO LEXICOGRÁFICA

 

import itertools
import time

#arquivo de criacao de sequencias
#com formato estilo 1;2;3 ..etc

n = 25  #quantidade total de dezenas nos jogos
r = 15  #quantidade total de dezenas sorteadas

#tempo do inicio
ini = time.time()

#inicializa a lista somente para fins educativos
numbers = []
for i in range(n):
   numbers.append(i+1)

#Abre e cria o arquivo 
fo = open("c:\\marco\\output_file_lexo.csv", "w+")


print("Inicio do processo de criacao de combinacoes")
count=0

for x in itertools.combinations(numbers, r):
   count+=1
   out = ""
   out = out.join(str(x))
   out = out.replace(" ","")
   out = out.replace("(","")
   out = out.replace(")","")
   out = out.replace(",",";")
   fo.write(out + "\n") #escreve aqui
print("Tamanho total-> ",count)
print("Fim do processo de criacao de combinacoes")
fim = time.time()

# Fecha o arquivo para nao dar problema de memoria
fo.close()


print("tempo de processamento total: ", fim-ini)

 

A outra forma em python é o output binario

 

5c3

 

1 1 1 0 0

1 1 0 1 0

1 1 0 0 1 etc

 

PYTHON GERACAO BINARIA

 

from itertools import combinations
import time

#arquivo de criacao binaria de sequencias
#com formato estilo 001100 ..etc

n = 25  #quantidade total de dezenas nos jogos
r = 15  #quantidade total de dezenas sorteadas

#tempo do inicio
ini = time.time()

#Abre e cria o arquivo 
fo = open("c:\\marco\\output_file_binaria.csv", "w+")


count = 0
for indexes in combinations(range(n), r):
    base = [0]*n
    for i in indexes:
        base = 1
    out = ""
    out = out.join(str(base))
    out = out.replace(" ","")
    out = out.replace("[","")
    out = out.replace("]","")
    out = out.replace(",","")
    fo.write(out + "\n")
    count+=1
print("Tamanho total-> ",count)
fim = time.time()

# Fecha o arquivo para nao dar problema de memoria
fo.close()

print("tempo de processamento total: ", fim-ini)
 

 

A escrita esta na linha 

fo = open("c:\\marco\\output_file_binaria.csv", "w+")

 

basta mudar a pasta e o nome do arquivo

 

@edcronos2, sobre o que disse, realmente entendo que a velocidade na geracao nao é tao importante, porem, um banco de dados de todas as combinacoes ajuda e muito.

O porem é que importante é justamente o uso de filtros.

Eu uso java, e para cada aproximadamente 100 filtros distintos, levo cerca de 30 segundos, ou seja, é rapido.

mas estou tentando migrar para outro método mais rapido de comparaçao justamente por tentar fazer aplicaçoes de de conjunto x conjunto.

Bom, pessoal, vamos que vamos. 

 

Sucesso

  • Like 1
Link to comment
Share on other sites

2 minutos atrás, edcronos2 disse:

@DixieJoe

para filtrar rapidamente se pode usar comparadores logicos em cima de bit

mas só ´funciona até 32 bits no vba é long no seu é intenger

 

para contar os acertos tem algumas instruções que dependem do processador e linguagem e ou até da placa de video usada

fora isso seria loop , mas mesmo assim melhora bem a velocidade

 

para mim que não gosto da loto facil não achei aplicação,

mas vou ver se faço por conjuntos

 

@dois e @Sphgf nós já fazemos uso dessas logicas em nossos testes e filtros

veja bem, quando se pega uma sequencia e compara com um rsultado ou uma outra sequencia para separar os acertos é logica de conjunto estamos separando oq pertence aos 2 conjunto, se aplicarmos o resultado em outra combinação vamos separar oq pertence aos 3 conjuntos

tbm se pode aplica comparador xor para filtrar os valores exclusivos, no caso os que não são compartilhados 

o restante caem no grande conjunto da incerteza do que vai ser sorteado

 

 

 

 

 

Olá Edcronos2,

sei disso e sei que as linguagens podem automatizar muitas etapas pois tem funções já definidas.

Basicamente o que precisamos é o output que nos dê acertos certeiros (para 1 ou mais dezenas, para fixar ou para excluir) que erre em muitos casos, mas acerte em outros.

 

Minha colaboração consiste em oferecer partes que podem ser controladas, onde se pode palpitar (mais do mesmo).

 

A planilha em questão demonstra para 3 conjuntos que quanto maior a qtd de dezenas em A (sem intersecção) pior é a qualidade do fechamento ?!

 

venn.jpg

 

Sei que estamos discutindo variados pontos dentro de um mesmo tópico, e que precisamos melhorar o tempo, melhorar os filtros e a qualidade das combinações aceitas e obviamente diminuir essa qtd sem perda dos prêmios principais e secundários.

 

Talvez a pitada de luz que esteja faltando seja analisar dados isoladamente, observar apenas uma dada posição e verificar o comportamento das dezenas dentro deste "espaço confinado" usando informações do tipo para a posição em questão a dezena saiu ou não, estava atrasada ou não (no sentido de sair em outra posição), estava atrasado ou não (no sentido de probabilidade).

 

O princípio de incerteza "adaptado" se aplicaria ? Se conseguir ao menos definir algumas dezenas para não sair em qualquer posição já se elimina combinações.

 

saudações,

 

Sphgf

Link to comment
Share on other sites

Guest Zangado
25 minutos atrás, Sphgf disse:

 

Olá Edcronos2,

sei disso e sei que as linguagens podem automatizar muitas etapas pois tem funções já definidas.

Basicamente o que precisamos é o output que nos dê acertos certeiros (para 1 ou mais dezenas, para fixar ou para excluir) que erre em muitos casos, mas acerte em outros.

 

Minha colaboração consiste em oferecer partes que podem ser controladas, onde se pode palpitar (mais do mesmo).

 

A planilha em questão demonstra para 3 conjuntos que quanto maior a qtd de dezenas em A (sem intersecção) pior é a qualidade do fechamento ?!

 

venn.jpg

 

Sei que estamos discutindo variados pontos dentro de um mesmo tópico, e que precisamos melhorar o tempo, melhorar os filtros e a qualidade das combinações aceitas e obviamente diminuir essa qtd sem perda dos prêmios principais e secundários.

 

Talvez a pitada de luz que esteja faltando seja analisar dados isoladamente, observar apenas uma dada posição e verificar o comportamento das dezenas dentro deste "espaço confinado" usando informações do tipo para a posição em questão a dezena saiu ou não, estava atrasada ou não (no sentido de sair em outra posição), estava atrasado ou não (no sentido de probabilidade).

 

O princípio de incerteza "adaptado" se aplicaria ? Se conseguir ao menos definir algumas dezenas para não sair em qualquer posição já se elimina combinações.

 

saudações,

 

Sphgf

o problema do principio da incerteza é que é sempre algo incerto

 

sobre conjuntos, nós sempre vamos estar trabalhando em cima deles

um conjunto de resultados, um conjunto de filtros, um conjunto de dados estatísticos

 

acho que o tempo, a linguagem "não importam" muito nos testes o importante é o resultado

 

mas bem, não entendo isso que vcs fazem de chocar resultados e filtros de varios tipos e colocar porcentagens

eu como falei gosto de pesquisar padrões

esses padrões tbm pode ser de atrasado e repetidas, pode ser de períodos

se pode formar conjuntos e desses dados  filtrar para contabilizar , mas como usar de um conjunto para outro sem discriminar a categoria dos dados?

Link to comment
Share on other sites

Guest Zangado
7 horas atrás, Marco Silva disse:

Eu uso java, e para cada aproximadamente 100 filtros distintos, levo cerca de 30 segundos, ou seja, é rapido.

sei que a situação não é a mesma

mas eu tbm a maioria de minhas rotinas são muito rapidas

 

mas creio que isso depende do que se está fazendo

tipo teste de sequenciamento direto

quantas sequencias de 5 dezenas tem cada concurso ?

quantas sequencias de 5 mais sequencia de 3 tem?

quantas sequencias de 5 mais sequencia de 3 tem mais sequencias de 2 tem?

e claro tbm suas variantes

 

tudo bem isso é somente montagem de estatística mas para mim é uma peça chave da das escolhas do que jogar se eu for jogar

 

as combinações possivei pode até demorar,

mas vc mesmo falou , ter um banco de dados com elas

depois de se criar o banco de dados para que se criar outro da mesma loteria? afinal não vai ter variações dele

já filtragem existe dos mais variado tipos e muito outras a se criar

 

eu mesmo gostaria de criar um teste de variação para chocar varios dados e ir fazendo testes até achar padrões conciliantes com cada fator , 

eu tinha até criado algo que acabei perdendo, e era demorado e bem limitado ainda criava tabelas de dados e chocava com varias situações depois ia contabilizando os que tinha maior envolvimento

esse tipo de teste é demorado tanto para se montar como para ser executado

 

Link to comment
Share on other sites

10 horas atrás, Sphgf disse:

Bom dia Dois e foristas,

bom pelo menos tenho algo mais a acrescentar...

"correções !! "  rsrsrs

 

 

 

Olá amigo forista Sphgf e demais,

 

Eis-me aqui após ter recém tomado meu café-da-manhã :wacko:..:wacko:

É isto mesmo, pois como tenho relatado em vários posts,

tem #&*)(§ de FUNK em frente aqui de casa TODO fim-de-semana

há mais de 4 (QUATRO) anos !!!

 

Quanto a citação supra, tenho certeza que tens muitíssimo a acrescentar

a começar por mim que, aliás, quero ressaltar publicamente, a minha

gigantesca gratidão a, principalmente, 2 (DOIS) foristas:

 

 Sphgf  Graças as suas valiosíssimas colaborações muitíssimo tenho

aprendido e, inclusive, possibilitando com que o  dois  em breve,

entre num processo de remodelagem.

 

 edcronos2  Graças as suas valiosíssimas colaborações muitíssimo tenho

aprendido e que me ajuda gigantescamente em EXCEL/VBA e lógica de programação.

 

 

Quanto ao conteúdo que gerou a citação supra, tentarei colaborar no próximo post.

 

 

Um abraço!

  • Like 1
Link to comment
Share on other sites

2 minutos atrás, dois disse:

 

 

Olá amigo forista Sphgf e demais,

 

Eis-me aqui após ter recém tomado meu café-da-manhã :wacko:..:wacko:

É isto mesmo, pois como tenho relatado em vários posts,

tem #&*)(§ de FUNK em frente aqui de casa TODO fim-de-semana

há mais de 4 (QUATRO) anos !!!

 

Quanto a citação supra, tenho certeza que tens muitíssimo a acrescentar

a começar por mim que, aliás, quero ressaltar publicamente, a minha

gigantesca gratidão a, principalmente, 2 (DOIS) foristas:

 

 Sphgf  Graças as suas valiosíssimas colaborações muitíssimo tenho

aprendido e, inclusive, possibilitando com que o  dois  em breve,

entre num processo de remodelagem.

 

 edcronos2  Graças as suas valiosíssimas colaborações muitíssimo tenho

aprendido e que me ajuda gigantescamente em EXCEL/VBA e lógica de programação.

 

 

Quanto ao conteúdo que gerou a citação supra, tentarei colaborar no próximo post.

 

 

Um abraço!

olá dois,

 

Estou devendo contato no Skype e tenho consciência disso.

Estive ausente por motivos pessoais.

 

Amanhã, terei tempo, caso possa conversar um pouco sobre seu pedido de nova conversa. Ligo o Skype durante o dia.

 

Vai ser um prazer.

 

Link to comment
Share on other sites

2 minutos atrás, DixieJoe disse:

olá dois,

 

Estou devendo contato no Skype e tenho consciência disso.

Estive ausente por motivos pessoais.

 

Amanhã, terei tempo, caso possa conversar um pouco sobre seu pedido de nova conversa. Ligo o Skype durante o dia.

 

Vai ser um prazer.

 

 

 

OK, amigo e parceiro DixieJoe,

 

Antes de mais nada quero deixar bem esclarecido que o contato via Skype

é pra melhorar a produtividade de maneira ágil, pois trata-se de assunto

técnico que exige troca de conhecimento em tempo real, concorda ???

 

Já tentou imaginar quantas postagens seriam necessárias pra se conseguir

TUDO o que tratamos naquelas quase 3 (TRES) horas no Skype ???

 

Enfim...

Quando meu status no Skype estiver on-line basta me chamar, e se eu não responder

é porque apaguei... então quando eu reiniciar kkk te mando mensagem, OK ???

 

 

Um abraço !

 

  • Like 1
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...