Jump to content

[OPINIÃO] Usar o CSN ajuda ou atrapalha


Recommended Posts

Olá à todos,

Crio este Tópico para não continuar poluindo o Tópico origem.

Como tenho comentado, estou gigantescamente atarefado,

assim minha disponibilidade é pouquíssima.

Então, infelizmente, não terei como detalhar conforme o desejado.

Mas vamos seguindo conforme o que for possível.

 

Um abraço.

 

  • Like 1
Link to post
Share on other sites

Propositalmente o Título não esclarece SE é uma Afirmação ou Indagação, Então inicio respondendo:

Literalmente pode ajudar ou atrapalhar, Logo:

  • SE o estudo estiver ajudando procuro avançar tentando encontrar algo favorável
  • SE o estudo estiver atrapalhando coloco no #ModoPause
  • Like 1
Link to post
Share on other sites

O que é relevante que já postei num outro Tópico:

 

Postagem 1:

Tenho um Projeto-base para aplicações estruturadas em CSN e que poderia ser utilizado na solução desta sua necessidade.

É um Projeto-base porque em algum momento é necessário converter o CSN nas suas correspondentes Dezenas.

 

Postagem 2:

Métodos pelo CSN também tenho, conforme já comentei e para tentar colaborar vou estender só o suficiente a não desvirtuar o Tópico:

Por exemplo: Um dos meus futuros Projetos pretende tentar viabilizar criação de Matrizes pelo CSN...

porque acredito que o Tempo de Processamento seja bem menor e também haverá alguma dificuldade menor no Tratamento de

Quantidade de Linhas/Combinações, que como a base será o Índice/CSN também posso utilizar Ponteiro. Evidentemente que não

será somente EXCEL/VBA pelas limitações que sabemos, Então continuo estudando (na verdade parei nesta pandemia) PYTHON e SGDB.

 

Postagem 3:

Resumidamente, digo, que a princípio será criação de MATRIZ pelo CSN e não pelas Dezenas.

(1) Matriz, Diagrama de Venn, IMSP, continuam sendo minha #ZonaDeConforto

(2) Matriz é somente o Termo, pois as que me interessam não são do tipo C(n,p), são do tipo v, k, t, m e outras Variáveis

(3) Os itens 1 e 2 me fizeram criar um Termo próprio que atualmente chamo de Matriz Condicionada

(4) A Lógica que será aplicada, resumidamente, utilizará Arrays, Índices e Ponteiros, mas haverá casos de PRÉ-FILTRAGEM em BD.

(5) Concluindo, a vantagem de usar CSN da Combinação aos invés das suas respectivas Dezenas é que não é necessário a conferência

      tradicional de pontuação/acertos, mas apenas a Quantidade de Índices. Por Exemplo, na LOTOFÁCIL, ao invés de conferir a pontuação

      de determinadas 15 Dezenas, apenas confiro seu respectivo CSN. Lembrando que este é apenas um esclarecimento resumido,

      pois para o entendimento do Todo, tenho que detalhar muito mais e inclusive Diagrama de Venn.

 

  • Like 1
  • Thanks 1
Link to post
Share on other sites

O Projeto-base já mencionado, atualmente, é o terceiro na minha lista de prioridades.

Considerando que CSN é o índice da Combinação, temos:

  1. A partir de determinada Combinação pode-se calcular seu respectivo índice
  2. A partir de determinado CSN pode-se calcular sua respectiva Combinação

Para o item 1 temos Planilhas disponíveis aqui na área de downloads do forum

e para o item 2 temos a Tabela no wikipedia. Desta forma temos tudo via Fórmulas;

No caso do EXCEL, sem obrigatoriedade de Macro (apenas tome cuidado com a LOTOMANIA).

 

  • Like 1
Link to post
Share on other sites
Agora, Friaça disse:

Opa...

Vou acompanhar esse tópico.

Quem sabe consigo pescar algo...kkk.

Muito bom @dois....vamos correr atrás dos 15 pontos, porque esse ano sai.....lol....

 

Eu tinha um Planejamento, mas sabiamente optei por sair do aluguel,

Então, aproveitei uma oportunidade e comprei meu modesto e amado apartamento

o qual também agradeço sempre ao nosso Bom, Perfeito e Misericordioso DEUS,

no nome Santo de Cristo JESUS e a consolação do Espírito Santo.

 

No Planejamento reformulado, começar a pensar em 15 pontos somente na próxima fase

que está prevista para daqui a 3 anos; Evidentemente que a Esperança existe,

mas caso ocorra será uma "çorte" gigantesca.

 

  • Like 2
Link to post
Share on other sites
29 minutos atrás, dois disse:
  1. A partir de determinado CSN pode-se calcular sua respectiva Combinação

Para o item 1 temos Planilhas disponíveis aqui na área de downloads do forum

e para o item 2 temos a Tabela no wikipedia. Desta forma temos tudo via Fórmulas;

No caso do EXCEL, sem obrigatoriedade de Macro (apenas tome cuidado com a LOTOMANIA).

de inicio eu tinha feito uma macro para converter de csn para combinação , mas apresentava inconsistencia para algumas combinações, vi outras macros por aí mas apresentaram o mesmo problema ou pior , depois larguei de lado
se souber de alguma que de a combinação certinha posta aí

  • Like 2
Link to post
Share on other sites
56 minutos atrás, Omesmo disse:

de inicio eu tinha feito uma macro para converter de csn para combinação , mas apresentava inconsistencia para algumas combinações, vi outras macros por aí mas apresentaram o mesmo problema ou pior , depois larguei de lado
se souber de alguma que de a combinação certinha posta aí

 

Irmão e Mestre, como eu disse acima, no wikipedia tem a Tabela para converter de CSN para Combinação através de Fórmulas,

ou seja, sem necessidade de Macro ou rotina de Força-Bruta. Tenho o link aqui em algum lugar, mas preciso procurar.

Por favor tenta pesquisar no wikipedia (em Português e em Inglês), salvo engano, no EXCEL usa a função índice().

 

  • Like 1
Link to post
Share on other sites
1 hora atrás, Omesmo disse:

de inicio eu tinha feito uma macro para converter de csn para combinação , mas apresentava inconsistencia para algumas combinações, vi outras macros por aí mas apresentaram o mesmo problema ou pior , depois larguei de lado
se souber de alguma que de a combinação certinha posta aí

 

1 hora atrás, dois disse:

 

Irmão e Mestre, como eu disse acima, no wikipedia tem a Tabela para converter de CSN para Combinação através de Fórmulas,

ou seja, sem necessidade de Macro ou rotina de Força-Bruta. Tenho o link aqui em algum lugar, mas preciso procurar.

Por favor tenta pesquisar no wikipedia (em Português e em Inglês), salvo engano, no EXCEL usa a função índice().

 

Encontrei o link e realmente é no site Inglês:

https://en.wikipedia.org/wiki/Combinatorial_number_system#National_Lottery_example_in_Excel

 

PS: no EXCEL usa a função índice()

Edited by dois
no EXCEL usa a função índice()
  • Like 1
Link to post
Share on other sites
4 minutos atrás, dois disse:

 

Irmão e Mestre, como eu disse acima, no wikipedia tem a Tabela para converter de CSN para Combinação através de Fórmulas,

ou seja, sem necessidade de Macro ou rotina de Força-Bruta. Tenho o link aqui em algum lugar, mas preciso procurar.

Por favor tenta pesquisar no wikipedia (em Português e em Inglês), salvo engano, no EXCEL usa a função indireto().

 

pensei que vc tinha uma macro, já vi essa da formula foi justamente por ela que montei a macro oq fica bem rapido achar as combinações, mas como falei parece que em certos csn o final fica errado, por força bruta fica muito pesado para calcular

Link to post
Share on other sites
Agora, Omesmo disse:

pensei que vc tinha uma macro, já vi essa da formula foi justamente por ela que montei a macro oq fica bem rapido achar as combinações, mas como falei parece que em certos csn o final fica errado, por força bruta fica muito pesado para calcular

 

Isto me interessa muito. SE puder postar aqui exemplos de erro agradeço e já começo a analisar prometendo te dar retorno.

No pouco que comecei a estudar notei 2 cuidados:

(1) Arredondamento

(2) A Modalidade LOTOMANIA provavelmente não seja possível de maneira direta, devido ao limite do EXCEL de 15 Dígitos para dados Tipo Número (Vale lembrar que o EXCEL tem limitações, por Exemplo, dados Tipo String tem limitação de 32.767)

 

Quanto a Força-bruta também procuro estudar formas de FILTRAR durante a execução do processamento...

Por Exemplo, agora mesmo a Macro acabou de me #Avisar que melhorou um processamento

e vou postar no respectivo Tópico sobre o assunto.

Link to post
Share on other sites

Trabalhar com CSN é de cada um.

Cada um enxerga uma figura diferente quando se olha para uma nuvem. 

Um dos problemas mínimos é ter que transformar as combinações de 15 em 7 dígitos e depois retornar para os 15 novamente.

As vezes isso acaba confundindo a mente.

No modo de pensar, até o momento estou preferindo trabalhar com os 7 dígitos em vez dos 15.

Só ainda estou procurando as linhas com melhor desempenho.

Estou criando um filtro de qualquer ordem no CSN baseado no sorteio passado, parece promissor com uma boa redução.

 

  • Like 2
Link to post
Share on other sites
Agora, Friaça disse:

Trabalhar com CSN é de cada um.

Cada um enxerga uma figura diferente quando se olha para uma nuvem. 

Um dos problemas mínimos é ter que transformar as combinações de 15 em 7 dígitos e depois retornar para os 15 novamente.

As vezes isso acaba confundindo a mente.

No modo de pensar, até o momento estou preferindo trabalhar com os 7 dígitos em vez dos 15.

Só ainda estou procurando as linhas com melhor desempenho.

Estou criando um filtro de qualquer ordem no CSN baseado no sorteio passado, parece promissor com uma boa redução.

 

Parceiro, agora preciso postar uma Matriz de Melhor Desempenho...

Fique aqui que em seguida te respondo.

 

Link to post
Share on other sites
Agora, dois disse:

Quanto a Força-bruta também procuro estudar formas de FILTRAR durante a execução do processamento...

Por Exemplo, agora mesmo a Macro acabou de me #Avisar que melhorou um processamento

e vou postar no respectivo Tópico sobre o assunto.

 

Eis o link:

 

  • Like 1
Link to post
Share on other sites

Já tinha visto seu estudo sobre isso, mas ainda não entendi.

O que quer dizer....

 

Após 123.982 processamentos do anterior que restavam *Fechar 26 dos 2117 Concursos já realizados,

agora melhorou e restam *Fechar 25 dos 2119 Concursos já realizados.

Link to post
Share on other sites
Agora, Friaça disse:

Questão (1)

Trabalhar com CSN é de cada um.

Cada um enxerga uma figura diferente quando se olha para uma nuvem. 

 

Questão (2)

Um dos problemas mínimos é ter que transformar as combinações de 15 em 7 dígitos e depois retornar para os 15 novamente.

As vezes isso acaba confundindo a mente.

 

Questão (3)

No modo de pensar, até o momento estou preferindo trabalhar com os 7 dígitos em vez dos 15.

Só ainda estou procurando as linhas com melhor desempenho.

Estou criando um filtro de qualquer ordem no CSN baseado no sorteio passado, parece promissor com uma boa redução.

 

Questão (1)

Concordo com sua opinião e Exemplo.

 

Questão (2)

Por isso mencionei Projeto-base, que talvez somente executará rotinas referentes a Conversão. Já quanto aos 7 Dígitos,

matematicamente, na minha opinião o 1º Dígito provoca alguma Interferência nos demais, pois são 4 possibilidades

e chegando até 10 nos demais 6 Dígitos.

 

Questão (3)

Nos poucos exercícios que fiz ocorreu o que já mencionei, Então nos próximos vou considerar também estudos de Delta.

Quanto a Linhas de Melhor Desempenho considero um trabalho gigantesco que retorna muitas Combinações para

um fechamento HISTÓRICO tradicional, por isso vou estudar pelo CSN sendo apenas o índice de Array...

 

Link to post
Share on other sites
36 minutos atrás, dois disse:

 

Isto me interessa muito. SE puder postar aqui exemplos de erro agradeço e já começo a analisar prometendo te dar retorno.

No pouco que comecei a estudar notei 2 cuidados:

(1) Arredondamento

(2) A Modalidade LOTOMANIA provavelmente não seja possível de maneira direta, devido ao limite do EXCEL de 15 Dígitos para dados Tipo Número (Vale lembrar que o EXCEL tem limitações, por Exemplo, dados Tipo String tem limitação de 32.767)

 

Quanto a Força-bruta também procuro estudar formas de FILTRAR durante a execução do processamento...

Por Exemplo, agora mesmo a Macro acabou de me #Avisar que melhorou um processamento

e vou postar no respectivo Tópico sobre o assunto.

a que eu tinha montado tenho que procurar tempão que larguei de lado, estava usando o de força bruta que modifiquei uma que peguei aqui mesmo no forum já que era para poucos csn

 

Spoiler

 

 




Public Function CsN_To_Combina_LF(xCSN)
     Dim xContador As Double
     Dim DZ, dz1, dz2, dz3, dz4, dz5, dz6, dz7, dz8, dz9, dz10, dz11, dz12, dz13, dz14, dz15 As Integer
     Dim xJogoEncontrado As String
     '''''
     xContador = 1
     dz1 = 1
     dz2 = 2
     dz3 = 3
     dz4 = 4
     dz5 = 5
     dz6 = 6
     dz7 = 7
     dz8 = 8
     dz9 = 9
     dz10 = 10
     dz11 = 11
     dz12 = 12
     dz13 = 13
     dz14 = 14
     dz15 = 15

     ''''' vai preencher
     Do While xContador <= 3268760
          If xContador = xCSN Then
               xJogoEncontrado = ""
               xJogoEncontrado = xJogoEncontrado & dz1 & ","
               xJogoEncontrado = xJogoEncontrado & dz2 & ","
               xJogoEncontrado = xJogoEncontrado & dz3 & ","
               xJogoEncontrado = xJogoEncontrado & dz4 & ","
               xJogoEncontrado = xJogoEncontrado & dz5 & ","
               xJogoEncontrado = xJogoEncontrado & dz6 & ","
               xJogoEncontrado = xJogoEncontrado & dz7 & ","
               xJogoEncontrado = xJogoEncontrado & dz8 & ","
               xJogoEncontrado = xJogoEncontrado & dz9 & ","
               xJogoEncontrado = xJogoEncontrado & dz10 & ","
               xJogoEncontrado = xJogoEncontrado & dz11 & ","
               xJogoEncontrado = xJogoEncontrado & dz12 & ","
               xJogoEncontrado = xJogoEncontrado & dz13 & ","
               xJogoEncontrado = xJogoEncontrado & dz14 & ","
               xJogoEncontrado = xJogoEncontrado & dz15
               CsN_To_Combina_LF = xJogoEncontrado
               Exit Function
               xContador = 3268760 + 1
          End If
          '''''' criar nova combinação


          dz15 = dz15 + 1
          If dz15 = 26 Then
               dz14 = dz14 + 1
               If dz14 = 25 Then
                    dz13 = dz13 + 1
                    If dz13 = 24 Then
                         dz12 = dz12 + 1
                         If dz12 = 23 Then
                              dz11 = dz11 + 1
                              If dz11 = 22 Then
                                   dz10 = dz10 + 1
                                   If dz10 = 21 Then
                                        dz9 = dz9 + 1
                                        If dz9 = 20 Then
                                             dz8 = dz8 + 1
                                             If dz8 = 19 Then
                                                  dz7 = dz7 + 1
                                                  If dz7 = 18 Then
                                                       dz6 = dz6 + 1
                                                       If dz6 = 17 Then
                                                            dz5 = dz5 + 1
                                                            If dz5 = 16 Then
                                                                 dz4 = dz4 + 1
                                                                 If dz4 = 15 Then
                                                                      dz3 = dz3 + 1
                                                                      If dz3 = 14 Then
                                                                           dz2 = dz2 + 1
                                                                           If dz2 = 13 Then
                                                                                dz1 = dz1 + 1
                                                                                If dz1 = 12 Then

                                                                                     xContador = 3268760 + 1
                                                                                End If
                                                                                dz2 = dz1 + 1
                                                                           End If
                                                                           dz3 = dz2 + 1
                                                                      End If
                                                                      dz4 = dz3 + 1
                                                                 End If
                                                                 dz5 = dz4 + 1
                                                            End If
                                                            dz6 = dz5 + 1
                                                       End If
                                                       dz7 = dz6 + 1
                                                  End If
                                                  dz8 = dz7 + 1
                                             End If
                                             dz9 = dz8 + 1
                                        End If
                                        dz10 = dz9 + 1
                                   End If
                                   dz11 = dz10 + 1
                              End If
                              dz12 = dz11 + 1
                         End If
                         dz13 = dz12 + 1
                    End If
                    dz14 = dz13 + 1
               End If
               dz15 = dz14 + 1
          End If
          xContador = xContador + 1
     Loop
End Function

 

 

 sobre gerar e filtrar acho que tenho algo que peguei por aí

Spoiler


Function Combs4from6(bigArr, mx As Long) As Long
     Dim a1 As Long, a2 As Long, a3 As Long, a4 As Long, a5 As Long, a6 As Long
     Dim i As Long, j As Long
     Dim r As Long, x As Long

     ReDim arr(1 To 6) As Long
     ReDim bigArr(1 To 6, 1 To 1000) As Long

     For a1 = mx - (mx - 6) + 1 To mx
          arr(1) = arr(1) + 1
          arr(2) = arr(1)
          For a2 = a1 - 1 To mx
               arr(2) = arr(2) + 1
               arr(3) = arr(2)
               For a3 = a2 To mx
                    arr(3) = arr(3) + 1
                    arr(4) = arr(3)
                    For a4 = a3 To mx
                         arr(4) = arr(4) + 1
                         arr(5) = arr(4)
                         For a5 = a4 To mx
                              arr(5) = arr(5) + 1
                              arr(6) = arr(5)
                              For a6 = a5 To mx
                                   arr(6) = arr(6) + 1
                                   r = r + 1
                                   filterComb bigArr, arr, x
                              Next
                         Next
                    Next
               Next
          Next
     Next


     For i = 1 To 6
          arr(i) = mx - 6 + i
     Next
     filterComb bigArr, arr, x

     ReDim Preserve bigArr(1 To 6, 1 To x)

     Combs4from6 = x

End Function


Function filterComb(bigArr, arr() As Long, x As Long) As Boolean
     Dim b As Boolean
     Dim i As Long, j As Long, k As Long
     Dim f As Long

     On Error GoTo errH

     If x < 1 Then
          x = x + 1
          For i = 1 To 6
               bigArr(i, 1) = arr(i)
          Next
          filterComb = True
     Else

          For i = 1 To x
               f = 0

               For j = 1 To 6
                    For k = 1 To 6
                         If bigArr(j, i) = arr(k) Then
                              b = True
                              Exit For
                         End If
                    Next

                    If b Then
                         f = f + 1
                         b = False
                         If f = 3 Then     ' garantia

                              Exit Function
                         End If
                    End If

                    If j - f > 6 - 3 Then     'acerto pretentido

                         Exit For
                    End If

               Next
          Next

          x = x + 1
          For i = 1 To 6
999            bigArr(i, x) = arr(i)
          Next
          filterComb = True
     End If

     Exit Function
errH:
     If Err.number = 9 And Erl = 999 Then
          'need to resize the array
          ReDim Preserve bigArr(1 To 6, 1 To UBound(bigArr, 2) + 1000)
          Resume
     End If

End Function

 

 

Link to post
Share on other sites
csn                              
1961256 1 12 13 14 15 16 17 18 19 20 21 22 23 24 25
1144066 1 2 13 14 15 16 17 18 19 20 21 22 23 24 25
646646 1 2 3 14 15 16 17 18 19 20 21 22 23 24 25
352716 1 2 3 4 15 16 17 18 19 20 21 22 23 24 25
184756 1 2 3 4 5 16 17 18 19 20 21 22 23 24 25
92378 1 2 3 4 5 6 17 18 19 20 21 22 23 24 25
43758 1 2 3 4 5 6 7 18 19 20 21 22 23 24 25
19448 1 2 3 4 5 6 7 8 19 20 21 22 23 24 25
8008 1 2 3 4 5 6 7 8 9 20 21 22 23 24 25
3003 1 2 3 4 5 6 7 8 9 10 21 22 23 24 25
1001 1 2 3 4 5 6 7 8 9 10 11 22 23 24 25
286 1 2 3 4 5 6 7 8 9 10 11 12 23 24 25
66 1 2 3 4 5 6 7 8 9 10 11 12 13 24 25
11 1 2 3 4 5 6 7 8 9 10 11 12 13 14 25
817190 1 2 4 6 7 8 9 10 11 15 16 17 20 22 25
497420 1 2 3 5 8 9 11 13 14 17 19 20 21 23 24
293930 1 2 3 4 7 8 10 12 13 15 16 17 19 22 24
167960 1 2 3 4 5 9 10 11 14 15 16 17 18 21 22
92378 1 2 3 4 5 6 17 18 19 20 21 22 23 24 25
48620 1 2 3 4 5 6 8 9 10 16 17 21 22 23 25
24310 1 2 3 4 5 6 7 9 10 16 17 21 22 23 25
11440 1 2 3 4 5 6 7 8 10 13 14 16 17 22 23
5005 1 2 3 4 5 6 7 8 9 11 21 22 23 24 25
2002 1 2 3 4 5 6 7 8 9 10 13 16 17 18 19
715 1 2 3 4 5 6 7 8 9 10 11 15 17 19 20
220 1 2 3 4 5 6 7 8 9 10 11 12 17 20 25
55 1 2 3 4 5 6 7 8 9 10 11 12 13 20 24
Link to post
Share on other sites
Agora, Friaça disse:

Já tinha visto seu estudo sobre isso, mas ainda não entendi.

O que quer dizer....

 

Após 123.982 processamentos do anterior que restavam *Fechar 26 dos 2117 Concursos já realizados,

agora melhorou e restam *Fechar 25 dos 2119 Concursos já realizados.

 

Conforme está explicado lá no Tópico, criei uma rotina de Força-bruta que processa até encontrar uma

Matriz Condicionada 25-15-11-15=30 de Melhor Desempenho, ou seja, uma Matriz HISTÓRICA.

O Termo Matriz Condicionada significa que a Montagem das 30 Linhas/Combinações está Condicionada

ao Método sudoku do @KSMG que gera 15 Linhas/Combinações horizontais e 15 verticais.

 

Minha Esperança é que fosse rápido fechar todos os Concursos com 30 Linhas/Combinações, pois com o software

do DixieJoe deve fechar em +-20 Linhas/Combinações, por isso fiz uma rotina apenas semi-automatizada que a cada

Matriz Condicionada 25-15-11-15=30 de Melhor Desempenho, interrompe o processamento e me #Avisa.

Desta forma eu salvo a Matriz atual e inicio um novo processamento... Então, atualmente, significa que no processamento atual

foram conferidas 123.982 Matriz Condicionada 25-15-11-15=30 de Melhor Desempenho em 2117 Concursos, sendo que

encontrou uma de apenas 25 Concursos não fechados dentre os 2117 Concursos analisados E permanece assim até

o mais recente Concurso, o 2119.

 

Agora, aproveitando o assunto CSN; 

Note que utilizando-se DEZENAS temos o seguinte cálculo das iterações:

A = 30 Linhas/Combinações

B = 15 Dezenas cada Linha/Combinação

C = 2117 Concursos analisados

D = 123.982 Processamentos

A * B * C * D = 30 * 15 * 2117 * 123.982 = 118.111.452.300

 

Já o Projeto CSN pretende utilizar CSN como índice para ser o mais próximo possível de:

A = 30 Linhas/Combinações

B = 1 índice cada Linha/Combinação

C = 2117 Concursos analisados

D = 123.982 Processamentos

A * B * C * D = 30 * 1 * 2117 * 123.982 = 7.874.096.820

 

Conclusão pretendida de reduzir para apenas 6,66667% (se possível, menos) e ainda encontrar outros FILTROS.

 

  • Like 1
Link to post
Share on other sites
Agora, Omesmo disse:

a que eu tinha montado tenho que procurar tempão que larguei de lado, estava usando o de força bruta que modifiquei uma que peguei aqui mesmo no forum já que era para poucos csn

 

  Ocultar conteúdo

 

 






Public Function CsN_To_Combina_LF(xCSN)
     Dim xContador As Double
     Dim DZ, dz1, dz2, dz3, dz4, dz5, dz6, dz7, dz8, dz9, dz10, dz11, dz12, dz13, dz14, dz15 As Integer
     Dim xJogoEncontrado As String
     '''''
     xContador = 1
     dz1 = 1
     dz2 = 2
     dz3 = 3
     dz4 = 4
     dz5 = 5
     dz6 = 6
     dz7 = 7
     dz8 = 8
     dz9 = 9
     dz10 = 10
     dz11 = 11
     dz12 = 12
     dz13 = 13
     dz14 = 14
     dz15 = 15

     ''''' vai preencher
     Do While xContador <= 3268760
          If xContador = xCSN Then
               xJogoEncontrado = ""
               xJogoEncontrado = xJogoEncontrado & dz1 & ","
               xJogoEncontrado = xJogoEncontrado & dz2 & ","
               xJogoEncontrado = xJogoEncontrado & dz3 & ","
               xJogoEncontrado = xJogoEncontrado & dz4 & ","
               xJogoEncontrado = xJogoEncontrado & dz5 & ","
               xJogoEncontrado = xJogoEncontrado & dz6 & ","
               xJogoEncontrado = xJogoEncontrado & dz7 & ","
               xJogoEncontrado = xJogoEncontrado & dz8 & ","
               xJogoEncontrado = xJogoEncontrado & dz9 & ","
               xJogoEncontrado = xJogoEncontrado & dz10 & ","
               xJogoEncontrado = xJogoEncontrado & dz11 & ","
               xJogoEncontrado = xJogoEncontrado & dz12 & ","
               xJogoEncontrado = xJogoEncontrado & dz13 & ","
               xJogoEncontrado = xJogoEncontrado & dz14 & ","
               xJogoEncontrado = xJogoEncontrado & dz15
               CsN_To_Combina_LF = xJogoEncontrado
               Exit Function
               xContador = 3268760 + 1
          End If
          '''''' criar nova combinação


          dz15 = dz15 + 1
          If dz15 = 26 Then
               dz14 = dz14 + 1
               If dz14 = 25 Then
                    dz13 = dz13 + 1
                    If dz13 = 24 Then
                         dz12 = dz12 + 1
                         If dz12 = 23 Then
                              dz11 = dz11 + 1
                              If dz11 = 22 Then
                                   dz10 = dz10 + 1
                                   If dz10 = 21 Then
                                        dz9 = dz9 + 1
                                        If dz9 = 20 Then
                                             dz8 = dz8 + 1
                                             If dz8 = 19 Then
                                                  dz7 = dz7 + 1
                                                  If dz7 = 18 Then
                                                       dz6 = dz6 + 1
                                                       If dz6 = 17 Then
                                                            dz5 = dz5 + 1
                                                            If dz5 = 16 Then
                                                                 dz4 = dz4 + 1
                                                                 If dz4 = 15 Then
                                                                      dz3 = dz3 + 1
                                                                      If dz3 = 14 Then
                                                                           dz2 = dz2 + 1
                                                                           If dz2 = 13 Then
                                                                                dz1 = dz1 + 1
                                                                                If dz1 = 12 Then

                                                                                     xContador = 3268760 + 1
                                                                                End If
                                                                                dz2 = dz1 + 1
                                                                           End If
                                                                           dz3 = dz2 + 1
                                                                      End If
                                                                      dz4 = dz3 + 1
                                                                 End If
                                                                 dz5 = dz4 + 1
                                                            End If
                                                            dz6 = dz5 + 1
                                                       End If
                                                       dz7 = dz6 + 1
                                                  End If
                                                  dz8 = dz7 + 1
                                             End If
                                             dz9 = dz8 + 1
                                        End If
                                        dz10 = dz9 + 1
                                   End If
                                   dz11 = dz10 + 1
                              End If
                              dz12 = dz11 + 1
                         End If
                         dz13 = dz12 + 1
                    End If
                    dz14 = dz13 + 1
               End If
               dz15 = dz14 + 1
          End If
          xContador = xContador + 1
     Loop
End Function

 

 

 sobre gerar e filtrar acho que tenho algo que peguei por aí

  Ocultar conteúdo




Function Combs4from6(bigArr, mx As Long) As Long
     Dim a1 As Long, a2 As Long, a3 As Long, a4 As Long, a5 As Long, a6 As Long
     Dim i As Long, j As Long
     Dim r As Long, x As Long

     ReDim arr(1 To 6) As Long
     ReDim bigArr(1 To 6, 1 To 1000) As Long

     For a1 = mx - (mx - 6) + 1 To mx
          arr(1) = arr(1) + 1
          arr(2) = arr(1)
          For a2 = a1 - 1 To mx
               arr(2) = arr(2) + 1
               arr(3) = arr(2)
               For a3 = a2 To mx
                    arr(3) = arr(3) + 1
                    arr(4) = arr(3)
                    For a4 = a3 To mx
                         arr(4) = arr(4) + 1
                         arr(5) = arr(4)
                         For a5 = a4 To mx
                              arr(5) = arr(5) + 1
                              arr(6) = arr(5)
                              For a6 = a5 To mx
                                   arr(6) = arr(6) + 1
                                   r = r + 1
                                   filterComb bigArr, arr, x
                              Next
                         Next
                    Next
               Next
          Next
     Next


     For i = 1 To 6
          arr(i) = mx - 6 + i
     Next
     filterComb bigArr, arr, x

     ReDim Preserve bigArr(1 To 6, 1 To x)

     Combs4from6 = x

End Function


Function filterComb(bigArr, arr() As Long, x As Long) As Boolean
     Dim b As Boolean
     Dim i As Long, j As Long, k As Long
     Dim f As Long

     On Error GoTo errH

     If x < 1 Then
          x = x + 1
          For i = 1 To 6
               bigArr(i, 1) = arr(i)
          Next
          filterComb = True
     Else

          For i = 1 To x
               f = 0

               For j = 1 To 6
                    For k = 1 To 6
                         If bigArr(j, i) = arr(k) Then
                              b = True
                              Exit For
                         End If
                    Next

                    If b Then
                         f = f + 1
                         b = False
                         If f = 3 Then     ' garantia

                              Exit Function
                         End If
                    End If

                    If j - f > 6 - 3 Then     'acerto pretentido

                         Exit For
                    End If

               Next
          Next

          x = x + 1
          For i = 1 To 6
999            bigArr(i, x) = arr(i)
          Next
          filterComb = True
     End If

     Exit Function
errH:
     If Err.number = 9 And Erl = 999 Then
          'need to resize the array
          ReDim Preserve bigArr(1 To 6, 1 To UBound(bigArr, 2) + 1000)
          Resume
     End If

End Function

 

 

 

São rotinas que funcionam, já utilizei a de Conversão, Entretanto procuro seguir seu conselho e crio as minhas também a partir delas.

Por exemplo, na rotina de Conversão,

        Sabemos que For..Next é muito mais rápido e com a vantagem de dispensar os vários if auxiliares ao Do While..Loop

Já na rotina de FILTRO,

        Nem faço ideia de como funciona, Então teria que analisar e testar para entender e opinar.

 

Link to post
Share on other sites
12 minutos atrás, dois disse:

Agora, aproveitando o assunto CSN; 

Note que utilizando-se DEZENAS temos o seguinte cálculo das iterações:

A = 30 Linhas/Combinações

B = 15 Dezenas cada Linha/Combinação

C = 2117 Concursos analisados

D = 123.982 Processamentos

A * B * C * D = 30 * 15 * 2117 * 123.982 = 118.111.452.300

 

Já o Projeto CSN pretende utilizar CSN como índice para ser o mais próximo possível de:

A = 30 Linhas/Combinações

B = 1 índice cada Linha/Combinação

C = 2117 Concursos analisados

D = 123.982 Processamentos

A * B * C * D = 30 * 1 * 2117 * 123.982 = 7.874.096.820

 

Conclusão pretendida de reduzir para apenas 6,66667% (se possível, menos) e ainda encontrar outros FILTROS.

acho que nesse caso o melhor seria usar BITWISE

converte as combinações em digito e compara e depois é só usar bitcount para ver os acertos , usando alguns artificios como o XOR pode facilitar a contagem

Link to post
Share on other sites
Agora, dois disse:

Note que utilizando-se DEZENAS temos o seguinte cálculo das iterações:

A = 30 Linhas/Combinações

B = 15 Dezenas cada Linha/Combinação

C = 2117 Concursos analisados

D = 123.982 Processamentos

A * B * C * D = 30 * 15 * 2117 * 123.982 = 118.111.452.300

 

Evidentemente que esse é o processamento tradicional, mas que na prática é uma verdadeira aberração de tão desnecessário que é,

Então conforme mencionei, a rotina também FILTRA durante a execução do processamento...

 

Link to post
Share on other sites
18 minutos atrás, dois disse:

 

Conforme está explicado lá no Tópico, criei uma rotina de Força-bruta que processa até encontrar uma

Matriz Condicionada 25-15-11-15=30 de Melhor Desempenho, ou seja, uma Matriz HISTÓRICA.

O Termo Matriz Condicionada significa que a Montagem das 30 Linhas/Combinações está Condicionada

ao Método sudoku do @KSMG que gera 15 Linhas/Combinações horizontais e 15 verticais.

 

Minha Esperança é que fosse rápido fechar todos os Concursos com 30 Linhas/Combinações, pois com o software

do DixieJoe deve fechar em +-20 Linhas/Combinações, por isso fiz uma rotina apenas semi-automatizada que a cada

Matriz Condicionada 25-15-11-15=30 de Melhor Desempenho, interrompe o processamento e me #Avisa.

Desta forma eu salvo a Matriz atual e inicio um novo processamento... Então, atualmente, significa que no processamento atual

foram conferidas 123.982 Matriz Condicionada 25-15-11-15=30 de Melhor Desempenho em 2117 Concursos, sendo que

encontrou uma de apenas 25 Concursos não fechados dentre os 2117 Concursos analisados E permanece assim até

o mais recente Concurso, o 2119.

 

Agora, aproveitando o assunto CSN; 

Note que utilizando-se DEZENAS temos o seguinte cálculo das iterações:

A = 30 Linhas/Combinações

B = 15 Dezenas cada Linha/Combinação

C = 2117 Concursos analisados

D = 123.982 Processamentos

A * B * C * D = 30 * 15 * 2117 * 123.982 = 118.111.452.300

 

Já o Projeto CSN pretende utilizar CSN como índice para ser o mais próximo possível de:

A = 30 Linhas/Combinações

B = 1 índice cada Linha/Combinação

C = 2117 Concursos analisados

D = 123.982 Processamentos

A * B * C * D = 30 * 1 * 2117 * 123.982 = 7.874.096.820

 

Conclusão pretendida de reduzir para apenas 6,66667% (se possível, menos) e ainda encontrar outros FILTROS.

 

Agora entendi....kkkkk.

Estou vendo que as trocas de mensagens entre você e o @Omesmo já está ficando em outro patamar.

Minhas ideias são muitas vagas e superficiais perto do entendimento de caros membros aqui.

 

  • Haha 1
Link to post
Share on other sites
1 minuto atrás, dois disse:

 

Evidentemente que esse é o processamento tradicional, mas que na prática é uma verdadeira aberração de tão desnecessário que é,

Então conforme mencionei, a rotina também FILTRA durante a execução do processamento...

 

so, vc pode transformar os filtros em binarios tbm , fica muito mais rapido

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

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...