Combinações: 10 números de 6 em 6
05/12/2003
0
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
Posts
05/12/2003
Spider
vou ver e entro em contato
05/12/2003
Deus
A página é: [url]http://www.delphiforfun.org/Programs/Permutes_2.htm[/url]
Espero que seja útil. ;) Abraços, dEUS.
05/12/2003
Spider
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;
05/12/2003
Carlos Bernardo
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.....
Clique aqui para fazer login e interagir na Comunidade :)