Jump to content

permutação de dígitos individuais


Guest Zangado

Recommended Posts

Guest Zangado

permutar valores tem um monte de rotinas por aí, até eu tenho e tentei implementar uma eu mesmo

mas no caso estou pensando em fazer por digito

 

imaginando em uma loteria qualquer quina por exemplo

são 5 dezenas oq dá 10 digitos

dezenas A--B--C--D--E

digitos  A1-A2--B1-B2--C1-C2--D1-D2--E1-E2

 

então eu quero ariar o valor de cada digito de maneira fixa

ex

A1 = 1 2    
A2 = 1 2 3  
           
B1 = 3      
B2 = 3 4    
           
C1 = 2 3    
C2 = 6 7 9  
           
D1 = 6 7    
D2 = 0 3 4 5
           
E1 = 0      
E2 = 2 9    

 

nesse caso

a dezena A iria ter os valores 11-12-13-21-23-23

a dezena B os valores 33-34

... a dezena D 60-63-64-65-70-73-74-75 e a E 02-09

isso iria gerar grupos do tipo

11-33-26-60-02

11-33-26-60-09

11-33-26-63-02

11-33-26-63-09

...

 

não sei se deu para entender

 

será que tem algo pronto para isso?

 

 

 

Edited by Zangado
Link to comment
Share on other sites

Guest Zangado
35 minutos atrás, DixieJoe disse:

Não conheço nada pronto, edcronos2.

 

então o jeito é tentar montar algo

não sou bom nessas coisas ainda mais com meu teclado do jeito que esta e sem mouse

vou tentar montar algo fixo para assimilar a logica e depois tento fazer algo dinamico com a possibilidade de qualquer quantidade de digitos

 

bem sem tentar não saberei né

 

valeu

Link to comment
Share on other sites

Como é posicional, primeiramente, eu geraria as dezenas possíveis em cada posição como você fez e colocaria as dezenas de cada posição em 5 arrays (A,B,C,D,E), controlando o tamanho do array com a quantidade de dezenas possíveis em cada array:

 

ex

A1 = 1 2    
A2 = 1 2 3  
           
B1 = 3      
B2 = 3 4    
           
C1 = 2 3    
C2 = 6 7 9  
           
D1 = 6 7    
D2 = 0 3 4 5
           
E1 = 0      
E2 = 2 9    

 

A1 * A2 - 2 * 3 = 6 (limite máxim do array A)

B1 * B2 - 1 * 2 = 2 (limite máximo do array B

C1 * C2 - 2 * 3 = 6 (limite máximo do array C)

D1 * D2 - 2 * 4 = 8 (limite máximo do array D)

E1 * E2 - 1 * 2 = 2 (limite máximo do array E)

 

Em seguida, gera-se as dezenas em cada array:

A(1) = 11; A(2) = 12; A(3) = 13; A(4) = 21; A(5) = 22; A(6) = 23;

idem para os demais arrays...

 

Depois fica fácil gerar os jogos com um loop em cada array, contando de 1 até o máximo de cada array e concatenando os valores.

 

Precisa-se ter apenas o cuidado de verificar se teremos dezenas duplicadas na geração. Isso só seria possível caso você tenha os mesmos digitos e, consequentemente as mesmas dezenas em arrays diferentes.

 

Não sei se isso ajuda.

 

Link to comment
Share on other sites

Guest Zangado
26 minutos atrás, DixieJoe disse:

Como é posicional, primeiramente, eu geraria as dezenas possíveis em cada posição como você fez e colocaria as dezenas de cada posição em 5 arrays (A,B,C,D,E), controlando o tamanho do array com a quantidade de dezenas possíveis em cada array:

 

ex

A1 = 1 2    
A2 = 1 2 3  
           
B1 = 3      
B2 = 3 4    
           
C1 = 2 3    
C2 = 6 7 9  
           
D1 = 6 7    
D2 = 0 3 4 5
           
E1 = 0      
E2 = 2 9    

 

A1 * A2 - 2 * 3 = 6 (limite máxim do array A)

B1 * B2 - 1 * 2 = 2 (limite máximo do array B

C1 * C2 - 2 * 3 = 6 (limite máximo do array C)

D1 * D2 - 2 * 4 = 8 (limite máximo do array D)

E1 * E2 - 1 * 2 = 2 (limite máximo do array E)

 

Em seguida, gera-se as dezenas em cada array:

A(1) = 11; A(2) = 12; A(3) = 13; A(4) = 21; A(5) = 22; A(6) = 23;

idem para os demais arrays...

 

Depois fica fácil gerar os jogos com um loop em cada array, contando de 1 até o máximo de cada array e concatenando os valores.

 

Precisa-se ter apenas o cuidado de verificar se teremos dezenas duplicadas na geração. Isso só seria possível caso você tenha os mesmos digitos e, consequentemente as mesmas dezenas em arrays diferentes.

 

Não sei se isso ajuda.

 

como não sou bom em matematica não sei como calcular os limites

 

mas como pretendo trabalhar diretamente nos digitos pq vão ser para loterias diferentes e até para a JB

pensei em uma estratégia diferente

montar um array com as unidades de cada digito

grupos(digitos, unidades)

mas uma matriz com o total de unidade de cada digito

tu(digito)

um loop na quantidade de digito preenchendo as unidades até completar todas as variaçoes

sobre repetiçoes se pode ter uma rotina posterior para excluir jogos com dezenas repetidas e jogos repetidos

mas tbm se pode usar para verificar tendencia de sequencia

Link to comment
Share on other sites

Guest Zangado

estou tentando fazer, mas ainda tenho que saber como calcular a quantidade de sequencias que vão ser geradas

    For l1 = 1 To dt
        dc = Range(Cells(il + l1 - 1, c), Cells(il + l1 - 1, c + 9)).Value2
        For c1 = 1 To 10
            If dc(1, c1) <> "" Then
                dtc(l1) = dtc(l1) + 1
                unidade(dtc(l1)) = dc(1, c1)
            End If
        Next
        ReDim Preserve unidade(1 To dtc(l1))
        digito(l1) = unidade
    Next
    For d = 1 To dt
        For u = 1 To dtc(d)
            LPm(d) = LPm(d) + 1
            Permut(LPm(d), d) = digito(d)(u)
        Next
    Next

 

Link to comment
Share on other sites

Não seria o mesmo que coloquei ai em cima?

 

Você vai precisar começar com o array de digitos por posição, com certeza. No restante, vai usar algo parecido com minha sugestão para montar as dezenas e os jogos.

 

Essa parte abaixo é que te ajuda a calcular o tamanho necessário em cada array, uma vez conhecidos os digitos por posição (Unidade e Dezena)

A1 * A2 - 2 * 3 = 6 (limite máximo do array A)

B1 * B2 - 1 * 2 = 2 (limite máximo do array B

C1 * C2 - 2 * 3 = 6 (limite máximo do array C)

D1 * D2 - 2 * 4 = 8 (limite máximo do array D)

E1 * E2 - 1 * 2 = 2 (limite máximo do array E)

 

Com relação à quantidade final, não é necessário calcular, uma vez que os jogos gerados vão sendo agregados um a um ao array final com os jogos com 5 dezenas (no exemplo).

 

Se for para 6 dezenas, é só ter mais controle ou fazer uma subrotina especifica para 5, outra para 6 dezenas, etc......

 

 

Link to comment
Share on other sites

Guest Zangado

@DixieJoe

não sei se vc não me entendeu ou eu não te entendi

no caso do exemplo

-A - B -C - D -E<<<DEZENAS

12-12-12-12-12<<DIGITOS

11-33-26-60-02

11-33-26-60-09

11-33-26-63-02

11-33-26-63-09

 

como pode ver cada grupo de cada digito somente vai modificar aquela posição , ou seja o digito

então creio que acaba sendo um pouco mais complexo

 

será que a quantidade de sequencias seria a quantidade de unidades de cada digito?

  unids              
2 2   A1 = 1 2    
6 3   A2 = 1 2 3  
6 1   B1 = 3      
12 2   B2 = 3 4    
24 2   C1 = 2 3    
72 3   C2 = 6 7 9  
144 2   D1 = 6 7    
576 4   D2 = 0 3 4 5
576 1   E1 = 0      
1152 2   E2 = 2 9    

 

Edited by Zangado
Link to comment
Share on other sites

Acho que você que não me entendeu edcronos2,

 

Do jeito que sugeri, o programa fica totalmente variável. Você só precisa alimentar os digitos (e mudar as quantidades e também os digitos caso queira):

 

A1 (digitos de Dezena do Array A1 inicial )- aqui você "entra os digitos que quiser para essa posição)---- no exemplo seu acima, você entra com 1 e 2

A2 (digitos de Unidade do Array A2 inicial) - aqui você "entra os digitos que quiser para essa posição)---- no exemplo seu acima, você entra com 1 e 2 e 3

 

E assim por diante. Então vai ter 6 dezenas para serem criadas a partir desses 2 arrays A1 e A2 iniciais e que vão ser colocadas no array A (agora com as Dezenas 11,12,13,21,22,23 (6, que você calcula pela simples multiplicação de 2 * 3 das quantidades de A1 e A2)

 

Mesma coisa para os demais B1,B2, B (dezenas) até E...

 

Ai é que entra seus loops finais para gerar os jogos, testar a existência de duplicidade, gravar no array final de conjuntos.

 

Deve ficar uma subrotina muito simples e rápida, com certeza. Pena que eu não entenda de Visual Basic, senão podia montar para você.

 

Se continuar com dúvida, posso tentar montar em DELPHI e você adapta.

Link to comment
Share on other sites

Guest Zangado
14 minutos atrás, DixieJoe disse:

Se continuar com dúvida, posso tentar montar em DELPHI e você adapta.

pode ser

enquanto isso tento terminar essa aqui que comecei

"estou com um ponteiro e uma marreta de 3k para fazer as teclas funcionarem :( "

cofi12_D.jpg

 

 

Edited by Zangado
Link to comment
Share on other sites

22 minutos atrás, edcronos2 disse:

estou tentando fazer, mas ainda tenho que saber como calcular a quantidade de sequencias que vão ser geradas


    For l1 = 1 To dt
        dc = Range(Cells(il + l1 - 1, c), Cells(il + l1 - 1, c + 9)).Value2
        For c1 = 1 To 10
            If dc(1, c1) <> "" Then
                dtc(l1) = dtc(l1) + 1
                unidade(dtc(l1)) = dc(1, c1)
            End If
        Next
        ReDim Preserve unidade(1 To dtc(l1))
        digito(l1) = unidade
    Next
    For d = 1 To dt
        For u = 1 To dtc(d)
            LPm(d) = LPm(d) + 1
            Permut(LPm(d), d) = digito(d)(u)
        Next
    Next

 

Se você não tiver problema com duplicidade, é só multiplicar a quantidade de cada array (A,B,C,D,E) com as dezenas 6* 2* 6* 8* 2 = 1152 conjuntos que serão criados no total.

 

Se você quiser poder criar dezenas em cada posição que sejam exclusivas, é só testar e retirar os conjuntos com dezenas duplicadas (ANTES de gerar ou após gerar)

Link to comment
Share on other sites

Guest Zangado
Agora, DixieJoe disse:

Se você não tiver problema com duplicidade, é só multiplicar a quantidade de cada array (A,B,C,D,E) com as dezenas 6* 2* 6* 8* 2 = 1152 conjuntos que serão criados no total.

 

Se você quiser poder criar dezenas em cada posição que sejam exclusivas, é só testar e retirar os conjuntos com dezenas duplicadas (ANTES de gerar ou após gerar)

como eu quero definir como numeros inteiros no caso de dezenas vai ser filtrado posteriormente

tbm , provavelmente vai servir para testar variações sequenciais

Link to comment
Share on other sites

Guest Zangado
2 minutos atrás, DixieJoe disse:

Se vai ser depois o teste, então é só multiplicar as quantidades. Vai representar a quantidade correta de jogos gerados

 

é que no caso das milhar do jb somente vai ser filtradas milhar repetida

das outras loterias provavelmente use apenas para testes

quero testar as variações de digitos dentro de períodos emtre outras coisas

Link to comment
Share on other sites

Agora eu que fiquei curioso... Você falou em Milhar (claro que vai poder ser Centena também...)

 

Você já descobriu uma maneira de definir os melhores digitos para cada posição? Entendi direito?

 

-----

 

Para Milhar e para Centena, eu sugiro usar outra lógica....

 

Muito mais fácil você gerar as 10000 possibilidades e ir "testando"...

 

Ou para Centena, gerar as 1000 possibilidades e ir "testando".

 

A lógica acima que você falou e que eu sugeri é muito mais adequada para outras loterias.

 

Fuiiiii

Link to comment
Share on other sites

Guest Zangado
1 minuto atrás, DixieJoe disse:

Agora eu que fiquei curioso... Você falou em Milhar (claro que vai poder ser Centena também...)

 

Você já descobriu uma maneira de definir os melhores digitos para cada posição? Entendi direito?

 

-----

 

Para Milhar e para Centena, eu sugiro usar outra lógica....

 

Muito mais fácil você gerar as 10000 possibilidades e ir "testando"...

 

Ou para Centena, gerar as 1000 possibilidades e ir "testando".

 

A lógica acima que você falou e que eu sugeri é muito mais adequada para outras loterias.

 

Fuiiiii

por isso falei de digito

pq a variação do teste vi ser em cima de valores estreitos

para isso vi ser feita a varredura de um periodo de jogos e registro da variação do digito daquela posição independente de limite da loteria

depois vou determinar a variação maxima e minima e determinar uma media, dessa media a parti do ultimo valor vai ser gerado outros digitos para a mesma posição

e por aí vai

 

Link to comment
Share on other sites

Guest Zangado

estou tentando criar o combinador pelos digitos

só não sei se a abordagem vai dar certo

    For d = 1 To dt
        dtp = dtp + dtc(d)
        For L = 1 To Int(tl / (dtc(d) * dtp))
            For u = 1 To dtc(d)
                For ui = 1 To dtp
                    LPm(d) = LPm(d) + 1
                    Permut(LPm(d), d) = digito(d)(u)
                Next
            Next
        Next
    Next

 

Edited by Zangado
Link to comment
Share on other sites

Guest Zangado

putz

tive um dejavu múltiplo agora e ao averso

normalmente é a sensação de que já passou por isso

nesse caso foi que eu estava fazendo outra coisa que ao procurar por esse conteudo tive o dejavu que já tinha feito a mesma coisa

só que no caso estou fazendo ainda e a outra coisa que vai me fazer procurar por essa ainda vai acontecer e criar o dejavu

coisa de maluco

kkkk esse treco deixa a pessoa pertubada

"falta o de estar marcando a aposta ganhadora da mega sena acumulada (e lembrar das dezenas , né)"

 

se um dejavu é uma falsa lembrança do passado,

então oq eu tive foi uma falsa lembrança do futuro ?

Edited by Zangado
Link to comment
Share on other sites

Guest Zangado

bem, acho que com algum ajuste vai

nos digitos definindo milhar

a 0 4 7
b 1 2 3
c 6 8  
d 1 8  

 

deu as sequancias

0 1 6
0 1 6
0 1 6
4 1 6
4 1 6
4 1 6
7 2 6
7 2 6
7 2 8
0 2 8
0 2 8
0 2 8
4 3 8
4 3 8
4 3 8
7 3 8
7 3  
7 3  

falhou os ultimos digitos e , isso tbm deve ter feito falhar a quantidade de cada digito

vou ver aqui onde errei

Edited by Zangado
Link to comment
Share on other sites

Guest Zangado
3 horas atrás, DixieJoe disse:

Como você chegou nesses digitos por posição? Frequencia? De que período analisado?

eita o desespero está alto

ainda não cheguei a digito para jogar

é apenas mais uma ferramenta para analise igual as outras que fiz

 

serve para montar jogos, sim pode servir , mas por enquanto as sequencias montadas são só para testes dos resultados

sim, talvez ajude a definir bons digitos por deslocamento

 

bem é isso, tbm estou no desespero igual a todos, e com isso testes ideias e mais testes

 

Link to comment
Share on other sites

Guest Zangado

sobre  permutador de digitos acho que consegui,

estava tentando usar a totalização do digito mas como não sou bom de calculo ´foi só tempo perdido

então parei de teimar comigo mesmo e fui no que sei fazer, 1+1 e se bobear usando os dedos da mão  kkkk

    For L = 1 To tl
        For d = 1 To dt
            If u(d) > dtc(d) Then u(d) = 1: u(d + 1) = u(d + 1) + 1
            Permut(L, d) = digito(d)(u(d))
        Next
        u(1) = u(1) + 1
    Next

quem olha assim pensa , po mais isso é muito facil, mas não sabe a dor de cabeça que dá até consegui definir a logica para tudo dar certo

 

a 0 4 7
b 1 2 3
c 6    
d 1 8 3

 

A B C D
0 1 6 1
4 1 6 1
7 1 6 1
0 2 6 1
4 2 6 1
7 2 6 1
0 3 6 1
4 3 6 1
7 3 6 1
0 1 6 8
4 1 6 8
7 1 6 8
0 2 6 8
4 2 6 8
7 2 6 8
0 3 6 8
4 3 6 8
7 3 6 8
0 1 6 3
4 1 6 3
7 1 6 3
0 2 6 3
4 2 6 3
7 2 6 3
0 3 6 3
4 3 6 3
7 3 6 3

 

ao que parece tudo está ok, se acharem alguma inconsistência me falem

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