Preciso programdor free-lancer pra o soft abaixo, se não quiser fazer e puder repassar fico agradecido.
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 será para 100 dezenas em cartões de 50 apostas.
Vou dar um
exemplo de como o programa fará as combinações:
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) que são cartões limites inical e final.
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 4 dezenas 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.
INPUT ---> 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 dos input começar por cartão 1 e cartão final ultimo, e
na condição 3 for solicitado N = 4 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 mais do que 4 dezenas repetidas como no nosso exemplo, 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).
Rotina de Geraçã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 ) = 4
INPUT 4 : Qual o cartão Inicial (opção 1 --> Cartão 1
(opção 2 --> Digitar cartão ) = 1
INPUT 5 : Qual o cartão Final (opção 1 --> Cartão Ultimo
(opção 2 --> Digitar cartão ) = 1
INPUT 6 : 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 , 4 , 1, 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 = 4
o programa copia as 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 = N = 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 , 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 = 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 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 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 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... O programa aceitou a 1a primeira combinação e a segunda combinação é
a PRIMEIRA combinação crescente que possui 4 dezenas repetidas.
Já o cartão seguinte (3) será criado assim:
Como foi digitado input 3 = 4
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 dezenas 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 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 ultimo= ( 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.
Perceba que eu pulei talvez a parte mais importante do programa que é
como fazer!!
Entretanto por isso estou chamando um pseudo bruta force o programa vai
e depois volta.
Acredito que o programa possa ser feito em Delphi ou C++, tenha
paciencia com meu programa, voce pode registrar o programa em seu nome.
Acredito plenamente 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 dezena.
Observações Relevantes: Tenho um soft pronto feito por um colega
contratado por este espaço, porém o soft gera 1 por 1 cada combinação e só
depois de gerada ele a compara e armazena ou exclui, funciona
perfeitamente para todas as loterias, menos para a lotomania, pois se nos
parametros for digitado 100 dezenas em cartões de 50 apostas com repetidas = 30
o primeiro cartão será de 1 a 50 o segundo será de 1 a 30 e de 51 a
70, do cartão primeiro até o cartão segundo existem 161 quadrilhoes de
cartões possiveis, então se o soft gerar a velocidade 4 milhoes de
cartões por segundo levará 1200 anos para fazer o segundo cartão e aceitá-lo.
Portanto soft que gere combinação sequencial não serve, o problema não
está na velocidade de geração e sim na forma, precisa seguir a rotina
acima.
Posso pagar o valor total de R$ 250,00 dividido em duas parcelas de R$
125,00. Não adianto valor antes da fabricação do soft, e POSSO enviar
uma cópia do soft feito pelo programador anterior para analise de quem
se interessar.
Darei prioridade para o programador de São Paulo - Capital, que possa
conversar pessoalmente e tenha condições de fazer o soft em Delphi ou
C++ ou Visual Basic.
Sei que o valor não é muito, porém sou pessoa física, então pode ser
encarado como um desafio também, haja vista ainda não consegui o
desenvolvedor certo.
Atenciosamente,
Paulo H G Ferreira.
Respota para
sphgf@yahoo.com.br