rockcavera
-
Posts
373 -
Joined
-
Last visited
-
Days Won
1
Content Type
Profiles
Forums
Downloads
Status Replies posted by 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
-
-
-
-
-
-
-
-
-
-
-
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.
-
-
-
-
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.
-
-
-
-
-
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.
-
-
-
-
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
-
-
-
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.
-
-
-
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++
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.
-
-
-
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:
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
-
-
-
-
-
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.
-
-