Delphi - Combinatoria

 
Vista:
Imágen de perfil de Franklin Granadillo

Combinatoria

Publicado por Franklin Granadillo (17 intervenciones) el 30/03/2007 15:50:15
Trato de hacer un programa para lotería, hay una "jugada" que no logro realizar, aquí la llaman "PERMUTA", algo así:

EL cliente selecciona un grupo de dígitos, ejemplo 0123, ¿Cómo "agrupar" las combinaciones posibles, sabiendo que, el número de dígitos en cada selección es de 3.

Con la selección anterior ocurrirá esto:

012
013
023
102
103
123
201
203
301
302
310
312

Nota: No se admite o no se desea dígitos repetidos.

De antemano, muchas gracias.
FG
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Combinatoria

Publicado por Dr Juzam (821 intervenciones) el 30/03/2007 17:52:55
A ver si esto te vale. El resultado de las combinaciones me sale distinto (me da más combinaciones):

{Un TButton y un ListBox}

procedure TForm1.Button1Click(Sender: TObject);
var
Numeros: Array [0..3] of integer; //Valores elegidos
ind1, ind2, ind3: integer; //Indices
begin
Numeros[0]:=0;
Numeros[1]:=1;
Numeros[2]:=2;
Numeros[3]:=3;
for ind1:=0 to 3 do
for ind2 := 0 to 3 do
for ind3 := 0 to 3 do
if (Numeros[ind1]<>Numeros[ind2]) and (Numeros[ind2]<>Numeros[ind3])
and (Numeros[ind1]<>Numeros[ind3]) then //Evitamos repeticiones del mismo numero
ListBox1.Items.Append(IntToStr(Numeros[ind1])+IntToStr(Numeros[ind2])+IntToStr(Numeros[ind3]));
end;

{Fin del codigo}

Por ejemplo, con los valores 0, 1, 2 y 3 me salen las siguientes combinaciones:

012
013
021
023
031
032
102
103
120
123
130
132
201
203
210
213
230
231
301
302
310
312
320
321

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Franklin Granadillo

RE:Combinatoria

Publicado por Franklin Granadillo (17 intervenciones) el 30/03/2007 20:21:53
Muchísimas gracias Dr. Juzam, trataré de mejorarlo, pero creo que con esto podré lograr lo que deseo. Le reitero mi agradecimiento. Cualquier cosa en que pueda ayudarlo no dude en consultarme.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:Combinatoria

Publicado por E.T. (1244 intervenciones) el 09/04/2007 19:22:46
Aqui te dejo lo siguiente, te genera las combinaciones de los 4 números de forma pseudo aleatoria, sólo pones lo aiguiente en un botón y listo, ten en cuenta que se repetirán los resultados, pero mientras más números pongas menos se repetirá la respuesta

procedure TForm1.Button1Click(Sender: TObject);
var
i,j,n:integer;
opciones:array of integer;
cadena:string[3];
begin
setlength(opciones,0);
cadena:='';
for i:=1 to 4 do begin
SetLength(opciones,length(opciones)+1);
opciones[i-1]:=i-1;
end;
for i:=1 to 3 do begin
n:=Random(length(opciones));
cadena:=cadena+inttostr(opciones[n]);
for j:=n to length(opciones)-1 do begin
opciones[j]:=opciones[j+1];
end;
setlength(opciones, length(opciones)-1);
end;
ShowMessage(cadena);
end;

hay que poner lo siguiente al crearse o activarse la forma

randomize;

el no poner esto hará que la combinación siempre inicie con el mismo número, o que la primera combinación siempre sea la misma
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar