Jump to content

rockcavera

Super VIP
  • Posts

    373
  • Joined

  • Last visited

  • Days Won

    1

Status Replies posted by rockcavera

    1. rockcavera

      rockcavera

      Bruno, esse último código que você mandou em conteúdo oculto está errado, pois você precisa mandar em código.

       

      Aqui uma postagem que fiz alertando e ensinando um cara a postar código em caixa de código. Post

    2. (See 137 other replies to this status update)

    1. rockcavera

      rockcavera

      Não é mandar só o código, é mandar como CÓDIGO.

       

      Assim:

      <html>
        <head>
          <title>Teste</title>
        </head>
        <body>
          <p>Algo escrito</p>
        </body>
      </html>

      Fica na barra de ferramentas de edição.

    2. (See 137 other replies to this status update)

    1. rockcavera

      rockcavera

      Não funcionou também. Tem que mandar como código. Do lado do citar tem o <> que é para inserir código.

    2. (See 137 other replies to this status update)

    1. rockcavera

      rockcavera

      Não funciona nem nesse testar-html. Já tentei com google chrome e firefox.

       

      Passei o código todo para Nim sim. Único gargalo no Nim é as Tabelas, que são lerdas, problema já conhecido dos desenvolvedores. Em outras linguagens essas tabelas são conhecidas como HashTables ou Dicionários.

    2. (See 137 other replies to this status update)

    1. rockcavera

      rockcavera

      Esse gerador em html, na verdade javascript, não funcionou aqui.

       

      Aquele lotterywheels em C++ consegui retirar os 3 gargalos, que são: gerador de todas as combinações (gera todas de V K, V M e V T); gerador das subcombinações de K T a partir de V K; gerador das supercombinações de V M a partir de V T.

       

      Acredito que o resto do código não apresente gargalo de desempenho.

    2. (See 137 other replies to this status update)

    1. rockcavera

      rockcavera

      Só tive tempo de olhar esse NOVOVB6 hoje. Estava só acessando pelo celular.

       

      Tem 5 pastas: Classe, Forms, MAKE, Modulos e Projeto.

       

      Dentro do Modulos tem um arquivo em freebasic que é um algorítimo de sort, quicksort.

       

      Forms só por deus. Tem 3 arquivos. Um form_Menu.frm que parece ser VB. form_Menu.frx que não sei e um arquivo de log.

       

      Classe tem o clsOtimizeGenerate.cls que parece ser VB também.

       

      MAKE tinha umas matrizes...

       

      Projeto nada de código fonte.

       

      É isso? Não tive tempo aina de me afundar em um código VB6, mas assim que tiver, eu verei.

    2. (See 137 other replies to this status update)

    1. rockcavera

      rockcavera

      Outros dois gargalos de desempenho para certos V K T M, é o código que gera as subcombinações K T de uma combinação V K. E também o que soma a cobertura e retira a cobertura. Bem o pilar do código do cara. O código é muito bom, mas tem gargalos de desempenhos dependendo do tamanho das combinações.

    2. (See 137 other replies to this status update)

    1. rockcavera

      rockcavera

      Pelo que eu entendi do código é assim:

       

      Você informa o V K T M pretendido e a quantidade de jogos que vai ter o fechamento, ou seja, você informa B também. Tem outros parâmetros lá que nem a quantidade de tentativas e alguns coeficientes.

       

      O código começa gerando todas as combinações de: V M, V K e V T. Depois pega-se todas as combinações de V M, V K e V T e cria um local para armazenar por correspondência a combinação para ID. VOcê digita combinaçõesVK[COMBINAÇÃO] ele retorna o ID.

       

      Depois ele cria uma variável (array) para armazenar todas as combinações de K T que cada combinação de V K gera.

       

      Tem uma parte da variável groupToDraw que ainda não entendi o que ela faz, porque não tive tempo de ver xD

       

      Depois ele começa de fato selecionando aleatoriamente (gerador de números aleatórios) pelo ID a quantidade de B que você informou.

       

      Com as linhas B geradas, ele verifica quantidade da cobertura e inicia o procedimento para tentar substituir as linhas por outras que dão uma melhor cobertura até ficar 100%. O processo de substituição tem um algorítimo que ainda não estudei.

       

      Nisso, ele tenta substituir até não conseguir mais reduzir a quantidade de jogos não cobertos e chegar num limite posto em uma constante. Chegou nesse limite ele para e começa tudo de novo a seleção aleatória da quantidade de linhas B. Faz esse processo até acabar a quantidade de tentativas.

       

    2. (See 137 other replies to this status update)

    1. rockcavera

      rockcavera

      Eu não tenho conhecimento bom em C para passar esse código de C++ para C. O Código para Nim já foi difícil de passar. Ficou com 344 linhas, mas fiz bem espaçado para ficar legível e comentei da onde tirei cada função (procedimento). 

    2. (See 137 other replies to this status update)

    1. rockcavera

      rockcavera

      Consegui passar com sucesso para Nim o código. Retirei apenas um gargalo até agora, que é o de geração de todas as combinações possíveis. O código do cara era muito lerdo. Ainda tem alguns códigos lerdos que preciso ver como melhorar.

       

      Adaptei o programa para funcionar com valores de entrada. Atualmente é executado assim: lottery.exe V K T M B NÚMERO_DE_TENTATIVAS

       

      Exemplo: matriz 31,4,2,4 tem recorde de 28. Então para achar essa matriz basta digitar: Lottery.exe 31 4 2 4 28 10

       

      Programa funciona com no máximo 31 no parâmetro V. O do cara usava templates em C++ com uma biblioteca que não tem suporte no Nim ainda, por isso o código só funciona com V até 31. Mas é fácil mudar isso. No entanto, enquanto não derrubar os gargalos do código, eu não vou perder tempo fazendo para 63 e 127 V.

       

      https://drive.google.com/file/d/13sISNUh0hGREXVeuILIsIi9beeDhM6TU/view?usp=sharing

    2. (See 137 other replies to this status update)

    1. rockcavera

      rockcavera

      Conseguiu compilar com o MinGW?

       

      Consegui passar algumas coisas para Nim já. Encontrei alguns gargalos no código do cara já que consigo melhorar.

       

      Falta terminar o main.cpp e os arquivos lottery.h, lottery.cpp e loterry.tpp. Demorei bastante tempo pra pegar jeito do c++, ainda mais que o cara usou template... Vou ver se consigo terminar hoje de noite.

    2. (See 137 other replies to this status update)

    1. rockcavera

      rockcavera

      Se o código não fosse em C++, eu passaria para Nim e tentaria otimizar o código para ser mais rápido. Problema que sou uma anta com c++ :-D

       

      Apesar do código ser curto, preciso aprender uns conceitos da linguagem que não gosto. C++ o código não é 100% compreensível nem para quem programa na linguagem há anos, imagina para um mero advogado metido a programador.

    2. (See 137 other replies to this status update)

    1. rockcavera

      rockcavera

      25,15,11,15 deu estouro de memória aqui. Isso porque eu tenho 16gb de ram.

       

      Consegui transformar o código em compilável pelo MinGW. Para conseguir compilar, abra o prompt de comandos do Windows e digita: g++ -v

       

      Se não der comando não encontrando, você já tem o GCC (compilador c/c++), ai é só executar o compile.bat. Se der comando não encontrando, é preciso baixar o MingW:

      MinGW32

      MinGW64

       

      O 32 é para sistemas 32 bits e o 64 para 64 bits.

       

      Baixa, descompacta a pasta mingw32 ou mingw64 no C:

       

      Agora você precisa adicionar a pasta C:\mingw32\bin ou C:\mingw64\bin na variável %PATH% para ser acessível pelo prompt de comandos (cmd). Acredito que esse seja o melhor tutorial: https://www.java.com/pt_BR/download/help/path.xml

       

      Código fonte:

      https://drive.google.com/file/d/1KyKimf5iiItrMgu95vmwN92eBerk2kks/view?usp=sharing

       

      Esse link tem o código fonte com as alterações para compilar com o MinGW.

       

      Para mudar os parâmetros de criação de matrizes, abra o main.cpp e edite:

      #define CONSTANT_N 31 // Parâmetro V
      #define CONSTANT_K 4 // Parâmetro K
      #define CONSTANT_T 2 // Parâmetro T
      #define CONSTANT_P 4 // Parâmetro M
      #define COVER_SIZE 28 // Quantidade de linhas que deve ter o sistema. O código só vai gerar essa quantidade, estando 100% fechado ou não.
      #define NUMBER_OF_RUNS 100 // Quantidade de tentativas

    2. (See 137 other replies to this status update)

    1. rockcavera

      rockcavera

      Obrigado. Feliz ano novo pra tu e tua familia. O problema do exe é que não dá para alterar os parametros v,k,t,m. É tudo no código fonte, por isso não te mandei. Me fala um v,k,t,m que eu te mando o exe pra tu ver como funciona.

    2. (See 137 other replies to this status update)

    1. rockcavera

      rockcavera

      Consegui, sim, usando CMake e compilador do visual studio. código é muito bom.

       

      Ontem tentei compilar no mingw, mas estava dando um erro de sintaxe que não estava com tempo para ver.

    2. (See 137 other replies to this status update)

    1. rockcavera

      rockcavera

      Bom dia.

       

      Vi ontem essa mensagem era meia noite e pouco, se não me engano.

       

      Clonei o repositório e consegui compilar depois de retirar os "asserts".

       

      Sempre que você ver um projeto com arquivo "CMakeLists.txt", pode ter certeza que a montagem inicial dele passa pelo programa CMake. No CMake você escolhe como quer compilar (compilador, arquitetura...). No caso aqui, gosto de usar o CMake com o Visual Studio. Demorei um pouco para conseguir compilar por conta dos erros com o assert que não estava sendo retirado quando colocava release e também por um arquivo de dependência random que os static_asserts também estavam dando erro.

       

      Olha, eu não dava nada para esse gerador de cobertura, mas ele é muito bom! Ótimo para reduzir. Problema que o código dele ta em C++ e você tem que especificar os parâmetros antes de compilar. Ou seja, toda nova redução você tem que recompilar o projeto.

    2. (See 137 other replies to this status update)

    1. rockcavera

      rockcavera

      Consegui rodar esse código C sim, mas não parece muito interessante.

       

      Atualizei o verificador de sistemas lá. Mudei a forma como determinar o progresso e adicionei uma forma de determinar o tempo restante.

    2. (See 137 other replies to this status update)

×
×
  • Create New...