Guest Zangado Posted October 1, 2016 Share Posted October 1, 2016 (edited) 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 October 1, 2016 by Zangado Quote Link to comment Share on other sites More sharing options...
DixieJoe Posted October 1, 2016 Share Posted October 1, 2016 Não conheço nada pronto, edcronos2. Quote Link to comment Share on other sites More sharing options...
Guest Zangado Posted October 1, 2016 Share Posted October 1, 2016 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 Quote Link to comment Share on other sites More sharing options...
Guest Zangado Posted October 1, 2016 Share Posted October 1, 2016 @DixieJoe se puder me ajudar com a logica agradeço talvez até sirva para vc Quote Link to comment Share on other sites More sharing options...
DixieJoe Posted October 1, 2016 Share Posted October 1, 2016 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. Quote Link to comment Share on other sites More sharing options...
Guest Zangado Posted October 1, 2016 Share Posted October 1, 2016 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 Quote Link to comment Share on other sites More sharing options...
Guest Zangado Posted October 1, 2016 Share Posted October 1, 2016 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 Quote Link to comment Share on other sites More sharing options...
DixieJoe Posted October 1, 2016 Share Posted October 1, 2016 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...... Quote Link to comment Share on other sites More sharing options...
Guest Zangado Posted October 1, 2016 Share Posted October 1, 2016 (edited) @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 October 1, 2016 by Zangado Quote Link to comment Share on other sites More sharing options...
DixieJoe Posted October 1, 2016 Share Posted October 1, 2016 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. Quote Link to comment Share on other sites More sharing options...
Guest Zangado Posted October 1, 2016 Share Posted October 1, 2016 (edited) 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 " Edited October 1, 2016 by Zangado Quote Link to comment Share on other sites More sharing options...
DixieJoe Posted October 1, 2016 Share Posted October 1, 2016 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) Quote Link to comment Share on other sites More sharing options...
DixieJoe Posted October 1, 2016 Share Posted October 1, 2016 Vou precisar sair agora. Amanhã podemos continuar. Boas eleições e bom trabalho! Quote Link to comment Share on other sites More sharing options...
Guest Zangado Posted October 1, 2016 Share Posted October 1, 2016 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 Quote Link to comment Share on other sites More sharing options...
DixieJoe Posted October 1, 2016 Share Posted October 1, 2016 Se vai ser depois o teste, então é só multiplicar as quantidades. Vai representar a quantidade correta de jogos gerados Quote Link to comment Share on other sites More sharing options...
Guest Zangado Posted October 1, 2016 Share Posted October 1, 2016 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 Quote Link to comment Share on other sites More sharing options...
DixieJoe Posted October 1, 2016 Share Posted October 1, 2016 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 Quote Link to comment Share on other sites More sharing options...
Guest Zangado Posted October 1, 2016 Share Posted October 1, 2016 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 Quote Link to comment Share on other sites More sharing options...
Guest Zangado Posted October 2, 2016 Share Posted October 2, 2016 (edited) 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 October 2, 2016 by Zangado Quote Link to comment Share on other sites More sharing options...
Guest Zangado Posted October 2, 2016 Share Posted October 2, 2016 (edited) 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 October 2, 2016 by Zangado Quote Link to comment Share on other sites More sharing options...
Guest Zangado Posted October 2, 2016 Share Posted October 2, 2016 (edited) 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 October 2, 2016 by Zangado Quote Link to comment Share on other sites More sharing options...
DixieJoe Posted October 2, 2016 Share Posted October 2, 2016 Como você chegou nesses digitos por posição? Frequencia? De que período analisado? Quote Link to comment Share on other sites More sharing options...
Guest Zangado Posted October 2, 2016 Share Posted October 2, 2016 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 Quote Link to comment Share on other sites More sharing options...
Guest Zangado Posted October 2, 2016 Share Posted October 2, 2016 (edited) 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 October 2, 2016 by Zangado Quote Link to comment Share on other sites More sharing options...
DixieJoe Posted October 2, 2016 Share Posted October 2, 2016 Sim, está certo, edcronos2. Concordo com você. Só parece fácil. Quem vê de fora, pensa que é só sentar e programar.... O mais importante é definir o que programar. 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.