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.
 


Responder a