Hola.
Cita:
Empezado por danielmj
...
De entre todos esos, busca los 6 que mas veces salen generando una combinacion tal que n (donde n puede ser 42 16 5 18 23 8).
...
Entonces, de que forma puedo generar las 720 posibles formas de mostrar la combinacion antes indicada.
...
|
Creo que podrías hacer:
Código Delphi
[-]
procedure combinatoria(v: array of Integer; Serie: TStrings);
var
a,b,c,d,e,f: Integer;
begin
if Length(v) <> 6 then
raise Exception.Create('Error: Deben ser 6 elementos');
for a := Low(v) to High(v) do
for b := Low(v) to High(v) do
for c := Low(v) to High(v) do
for d := Low(v) to High(v) do
for e := Low(v) to High(v) do
for f := Low(v) to High(v) do
if not(
(v[a]=v[b])or(v[a]=v[c])or(v[a]=v[d])or(v[a]=v[e])or(v[a]=v[f])or
(v[b]=v[c])or(v[b]=v[d])or(v[b]=v[e])or(v[b]=v[f])or
(v[c]=v[d])or(v[c]=v[e])or(v[c]=v[f])or
(v[d]=v[e])or(v[d]=v[f])or
(v[e]=v[f])) then
Serie.Add(Format('%d %d %d %d %d %d',[v[a], v[b], v[c], v[d], v[e], v[f]]));
end;
Ejemplos de uso:
Código Delphi
[-]
...
Combinatoria([0, 1, 2, 3, 4, 5], Memo1.Lines);
Combinatoria([42, 16, 5, 18, 23, 8], ListBox1.Items);
...
Saludos