Combinações: 10 números de 6 em 6

05/12/2003

0

:shock:
Olá a todos,

Tenho 10 números e preciso agrupá-los de 6 em 6. Como faço para saber a todas as combinações possíveis? Para saber a quantidade de combinações eu conseguí, agora eu preciso saber e armazenar em uma tabela todas as combinações.

Quem pode me ajudar?

Obrigado
Anderoson
acbinfor@uai.com.br


Andersonmv

Andersonmv

Responder

Posts

05/12/2003

Spider

cara... num tô com o codigo na cabeça ainda naum mais achei interessante... o que melhor cairia seria uma função apenas, só que recursiva! ou 5 ou 6 FOR, um dentro do outro

vou ver e entro em contato


Responder

05/12/2003

Deus

Olha, tem uma página com um programa que faz exatamente o que você quer. :) Ou seja, permutações e combinações, só que ele faz de, por exemplo 10 números: 1 a 10. Acho que você não pode escolher os números, mas aí vc altera o código fonte para tal.

A página é: [url]http://www.delphiforfun.org/Programs/Permutes_2.htm[/url]

Espero que seja útil. ;) Abraços, dEUS.


Responder

05/12/2003

Spider

veja este codigo abaixo... criei uma stringlist para conter os 10 numeros que tenho, coloquei um stringgrid(name=grid1) para formar os numeros de 6 dígitos
coloquei uma progressbar(name=p) para ver o progresso
no final ele retorna uma mensagem com a quantidade de numeros gerados, levei em consideração que um numero naum se repete.
tipo:
112345 > naum é válido por ter dois numeros 1.

var st : TStringList;
a,b,c,d,e,f : integer;
begin
st:= TStringList.Create;
st.Clear;
st.Add(´0´);
st.Add(´1´);
st.Add(´2´);
st.Add(´3´);
st.Add(´4´);
st.Add(´5´);
st.Add(´6´);
st.Add(´7´);
st.Add(´8´);
st.Add(´9´);
p.Max:=10*9*8*7*6*5;
p.Position:=0;
grid1.RowCount:=2;
grid1.Rows[1].Clear;
for a:= 0 to 9 do
for b:= 0 to 9 do
begin
if b<>a then
for c:= 0 to 9 do
begin
if (c<>b) and (c<>a) then
for d:= 0 to 9 do
begin
if (d<>c) and (d<>b) and (d<>a) then
for e:= 0 to 9 do
begin
if (e<>d) and (e<>c) and (e<>b) and (e<>a) then
for f:= 0 to 9 do
begin
if (f<>e) and (f<>d) and (f<>c) and (f<>b) and (f<>a) then
begin
p.Position:=p.Position+1;
Application.ProcessMessages;
grid1.cells[0,grid1.RowCount-1]:=st.Strings[a]+st.Strings[b]+st.Strings[c]+st.Strings[d]+st.Strings[e]+st.Strings[f];
grid1.RowCount:=grid1.RowCount+1;
end;
end;
end;
end;
end;
end;
grid1.rowcount:=grid1.rowcount-1;
showmessage(inttostr(grid1.RowCount-1));
end;


Responder

05/12/2003

Carlos Bernardo

Bom´o método q eu vou colocar aqui, é meio trabalhoso, + vai lá:

Suponha q sejam 10 letras com combinações de 6 em 6

para eu saber o total é :

10*9*8*7*6*5 /6*5*4*3*2*1

logo eu vou ter 210 combinações.

Sabe-se q todas as letras , estarão dispostas em números iguais, ou seja, eu terei (10,6) - (9,6) de A...
126 repetiçoes de A em 210 combinações...
logo a soma de B será 126
C tbm...,d,e,etc.....

Como eu dividi dessa maneira o q eu faço...

1º Jogo todos os ´A´ na 1ª Coluna , da linha 1 a 126...
2º Jogo (9,6) - (8,6) de B na 1ª Coluna..., ou seja, 56 ´B´ na 1ª Coluna...
3º Jogo (8,6) - (7,6) de C na 1ª Coluna..., ou seja, 21 ´C´ na 1ª Coluna...
4º Jogo (7,6) - (6,6) de D na 1ª Coluna...,ou seja, 6 ´D´ na 1ª Coluna...
5º Jogo (6,6) de E na 1ª Coluna...,ou seja 1 ´E´ na 1ª Coluna....

Pode ver q a soma de cada letra na 1ª coluna é igual as 210 combinações possíveis....

A Partir daí , é só destrinchar as próximas colunas.....
Sabendo q para A da 1 ª coluna , eu tenho 70 B, + 35C +15D + 5E + 1 F
ou seja, os 126 ´A´ da 1ª Coluna é Preenchido com 70B seguido de 35C, 15D 5E e 1F na 2ª coluna...

Eu faço da seguinte maneira:

a := 0;
While a <126 do
a := a+1;
table1.Append;
begin
table1[´Coluna1´] :=´A´;
If a <=70 then
begin
table1[´Coluna2´] := ´B´;
end;
If (a >70) and (a <=105) then
begin
table1[´Coluna2´] := ´C´;
end;
If (a>105) and (a<=120) then
begin
table1[´Coluna2´] := ´D´;
end;
If (a >120) and (a<=125) then
begin
table1[´Coluna2´] := ´E´ ;
end;
If a = 126 then
begin
table1[´Coluna2´] := ´F´
end;
end;

E assim por diante, só coloquei begin-end na condição if por q dessa maneira voce deverá preencher as 6 colunas...
Aí tá descrito os 126 A da 1ª Coluna, e seu complemento na 2ª Coluna....

Obs:. se for para jogar na Mega Sena, a maquininha deles já faz essa combinação automática.....


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar