Ver Mensaje Individual
  #2  
Antiguo 20-10-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
Empezado por danielmj Ver Mensaje
...
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
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita