Bom dia a todos, sou novo no grupo, estou precisando um programador, abaixo os detalhes da vaga e do projeto.
Vaga: Programador Free-Lancer Local de Trabalho: À distância Experiencia exigida: Sólidos conhecimentos em Delphi Faixa Salarial: A combinar pelo projeto Beneficio oferecido: NA Projeto: Construção de Soft para a Lotomania. Solicito a quem se interessar que envie o valor aproximado para a construção do soft (hora programado ou valor fechado Forma de contato: e-mail = [EMAIL PROTECTED] telefone = 11 - 4775-4279 (residencial) Detalhes: O principal da idéia esta descrito abaixo, porém haverá a necessidade de incluir uma rotina de filtros que será (comparação com uma outra lista) a ser incluida, ainda não desenvolvida. Estou deixando na área de arquivos o soft feito por um colega programador, este soft basicamente produzirá na saída de dados o mesmo resultado, porém a velocidade de processamento será menor para jogos da Lotomania. Preciso um orçamento pra este soft abaixo(não precisa um ambiente grafico arrojado). O programa que tenho em mente pode ser pensado como "uma forma controlada de pular cartões" ou "uma espécie de Bruta Force". O programa sera para 100 dezenas em cartão de 50 apostas. Vou dar um exemplo de como o programa funciona: Vamos supor que num determinado jogo eu tenha 12 dezenas (1 a 12) e quero fazer cartões com 7 dezenas por cartão (x1, x2, x3, x4, x5, x6, x7) posição de 1 a 7, que podem ser ocupadas até um certo limite: X1 (só pode ter valores 1 a 6), x2 (2 a 7), x3 (3 a 8), x4 (4 a 9), x5 (5 a 10), x6 (6 a 11), x7 (7 a 12). Esta é a 1a condição do exemplo (detalhar os limites das dezenas nas posições) Tudo isso em ordem crescente. 2a Condição: Quase ficou explicita na primeira. São 7 posições que não podem ter a mesma dezena, logo: p7 > p6 > p5 > p4 > p3 > p2 > p1 > 0 e( p7 dif p6 dif p5 dif p4 dif p3 dif p2 dif p1 dif 0 ) dif = diferente. 3a Condição: Qual a relação/diferença de um cartão pra outro?? (Exemplo: Outras combinações(K-subsets) com menos de 5 dz repetidas/iguais ao anterior, (vamos chamar variavel N) ). 4a Condição: Input ---> Qual o cartão Inicial ?? Opção 1 = Cartão primeiro, cartão 1. Opção 2 = Digitar as dezenas do cartão inicial. Qual o cartão Final ?? Opção 1 = Cartão ultimo. Opção 2 = Digitar as dezenas do cartão final. Vou tentar explicar a condição 3: Se na resposta do input começar por cartão 1 e na condição 3 for solicitado N = 5 então na resposta deve sair: teste.txt = 11 01 02 03 04 05 06 07 (cartão primeiro) 01 02 03 04 08 09 10 (cartão segundo) 01 02 03 05 08 11 12 (cartão terceiro) 01 02 04 06 09 11 12 (cartão quarto) 01 02 05 07 09 10 11 (cartão quinto) 01 02 06 07 08 10 12 (cartão sexto) 01 03 04 07 10 11 12 (cartão setimo) 01 03 05 06 09 10 12 (cartão oitavo) 01 03 06 07 08 09 11 (cartão nono) 01 04 05 06 08 10 11 (cartão decimo) 01 04 05 07 08 09 12 (cartão decimo primeiro) Existem softs muito bons que fazem isso, mas não pra lotomania pois não são rápidos. Entendo que estes softs funcionam da seguinte forma: Dada a lista de dezenas, o soft gera o primeiro cartão com as dezenas na ordem que são apresentadas (no caso as 7 primeiras do grupo de 12 dezenas, depois gera o segundo cartão mudando 1 dezena de cada vez e compara/confere com a combinação 1 gerada e armazenada na lista do programa, se tiver N-1 (no nosso caso 5 dzs) dezenas repetidas, joga a combinação fora e faz a proxima, se a condição for satisfeita armazena na lista e faz nova combinação e compara agora com as duas combinações lá presentes, até se esgotarem todas as combinações possiveis no caso 792, portanto estes softs geram Todas as combinações. Vou tentar explicar a condição 4: Iniciar a "fabricação" a partir do cartão 1 ou digitar as 7 dezenas (que devem estar entre as 12) e a partir desta combinação gerar os proximos cartões que não possuem N dezenas repetidas, que no nosso programa após ser digitadas as 7 dezenas o programa Deve classifica-las em ordem crescente. (1o Bug). / O Pseudo Algoritmo: Input 1 : Qtd de numeros ( 10 a 100 ) = 12 Input 2 : Dzs por cartão ( 02 a 50 ) = 7 Input 3 : Qtd de repetidos ( 0 a 49 ) > 5 Input 4 : Qual o cartão Inicial (opção 1 --> Cartão 1 (opção 2 --> Digitar cartão ) = 1 Qual o cartão Final (opção 1 --> Cartão ultimo (opção 2 --> Digitar cartão ) = 1 Input 5 : Qual nome do arquivo para salvar = teste.txt Note que após respondida a entrada 1 dependendo da resposta ( 12 ) deve-se impor no Input 2 a opção ( 2 a 12 ) e não mais (2 a 50) = 2o Bug. Após ser respondida o Input 2 ( 7 ) deve-se impor no Input 3 a opção ( 0 a 11 ) e não mais (0 a 49) = 3o Bug. A geração dos cartões: Como foi escolhido as opções - 12, 7 , 5 , 1. O primeiro cartão é: 01 02 03 04 05 06 07 (cartão primeiro) Já o segundo cartão será feito da seguinte forma: Como foi digitado input 3 = 5 o programa copia as (N-1) 4 primeiras dezenas do cartão primeiro e adiciona a unidade 1 ao valor que está na posição x4 para fazer a posição x5 que fica assim (01 02 03 04 05) depois confere/compara estas 5 dezenas com o cartão primeiro e verifica que existem 5 dezenas repetidas do cartão anterior repetidas = 5. Se isso ocorre então ele adiciona mais 1 unidade na posição x5 ficando agora cartão 2 = (01 02 03 04 06) depois confere novamente com o cartão primeiro e verifica que dezs repetidas maior que N-1 , se isso ocorre então o programa adiciona 1 unidade na posição x5 que passa para valor 07 ficando agora cartão 2 = (01 02 03 04 07) depois confere novamente com o cartão primeiro e verifica que dezs repetidas maior que N-1 = 5 , se isso ocorre então o programa adiciona 1 unidade na posição x5 que passa para valor 08 ficando agora cartão 2 = (01 02 03 04 08) depois confere novamente com o cartão primeiro e verifica que não ha mais que N-1 dzs repetidas então ele passa a calcular a posição x6 da seguinte maneira: Primeiro pega a posição x5 e adiciona 1 unidade e fica assim (01 02 03 04 08 09) então compara/confere com o cartão primeiro e verifica que dez repetidas não é maior que N-1 então aceita x6 e adiciona 1 unidade em x6 para fazer x7 e fica assim (01 02 03 04 08 09 10) depois confere novamente com o cartão primeiro e verifica que dezs repetidas não é maior que N-1 então aceita o cartão 2 e adiciona na lista. cartão 2 = (01 02 03 04 08 09 10) Note que nesta passagem o programa deixou de fabricar/gerar os cartões: 01 02 03 04 05 06 08 01 02 03 04 05 06 09 01 02 03 04 05 06 10 01 02 03 04 05 06 11 01 02 03 04 05 06 12 01 02 03 04 05 07 08 01 02 03 04 05 07 09 01 02 03 04 05 07 10 01 02 03 04 05 07 11 01 02 03 04 05 07 12 01 02 03 04 05 08 09 01 02 03 04 05 08 10 01 02 03 04 05 08 11 01 02 03 04 05 08 12 01 02 03 04 05 09 10 01 02 03 04 05 09 11 01 02 03 04 05 09 12 01 02 03 04 05 10 11 01 02 03 04 05 10 12 01 02 03 04 05 11 12 01 02 03 04 06 07 08 01 02 03 04 06 07 09 01 02 03 04 06 07 10 01 02 03 04 06 07 11 01 02 03 04 06 07 12 01 02 03 04 06 08 09 01 02 03 04 06 08 10 01 02 03 04 06 08 11 01 02 03 04 06 08 12 01 02 03 04 06 09 10 01 02 03 04 06 09 11 01 02 03 04 06 09 12 01 02 03 04 06 10 11 01 02 03 04 06 10 12 01 02 03 04 06 11 12 01 02 03 04 07 08 09 01 02 03 04 07 08 10 01 02 03 04 07 08 11 01 02 03 04 07 08 12 01 02 03 04 07 09 10 01 02 03 04 07 09 11 01 02 03 04 07 09 12 01 02 03 04 07 10 11 01 02 03 04 07 10 12 01 02 03 04 07 11 12 Portanto pulou apenas os 45 cartões que não se encaixavam na Condição. Já o cartão seguinte (3) será criado assim: Como foi digitado input 3 = 5 o programa copia as 4 primeiras dezenas do cartão Segundo e adiciona a unidade 1 na posição x4 para fazer a posição x5 que fica assim (01 02 03 04 05) Depois confere esta combinação parcial de 5 dezenas com a lista no caso ainda o cartão 1 e o 2. Verifica que ha mais que N-1 dez repetidas então adiciona 1 ao valor que está em x5 e repete todo o processo, mas no final encontra um problema todas as condições foram executadas mas não encontrou a combinação pois a ultima que o programa encontrou foi (01 02 03 04 10) e com 10 em x5 seu limite ao conferir com a lista percebeu que as repetidas eram maior que N-1 e ele não pode fazer x5=11 então agora ele deve passar a calcular a posição anterior pois esgotou-se x5 então deve pegar a posição x4 e adicionar 1 ficando agora cartão 3 = (01 02 03 05) ai ele compara com a lista (cartão 1 e 2) e aceita x4 = 05 repete todo o processo e encontra cartão 3 = (01 02 03 05 08 11 12). Dai recomeça o processo para os demais cartões, até que ele encontra o cartão limite = ( 06 07 08 09 10 11 12 ) compara com a lista e o rejeita, como todos os limites para os xis (x1 a x7) foram encontrados o programa encerra. Por isso estou chamando um pseudo bruta force, o programa vai e depois volta. Acredito que este programa vai fazer muitos mais cartões do que qualquer outro soft faz, porque não conclui os cartões e se uma dezena não se encaixa ele parte pra outra. Obrigado, Paulo Henrique Gomes Ferreira.