Generador de permutaciones
Delphi
Publicado el 2 de Junio del 2007 por Frank Rafael Arteaga (2 códigos)
13.890 visualizaciones desde el 2 de Junio del 2007
Compilador: DELPHI3.0 o superior y la unit perlexi2 (contenedora de la anterior clase) es combatible con Turbo Pascal 7.0.
Comentarios sobre la versión: Versión 1 (4)
al ingresar los datos 1234 el programa genera:
1243
1324
1342
1423
1432
2134
2143
2314
2341
2413
2431
3124
3142
3214
3241
3412
3421
4123
4132
4213
4231
4312
4321
siendo que por ejemplo cadenas que empiecen con un 1 pueden ser Mas:
1) 1,2,3,4
2) 1,2,4,3
3) 1,3,2,4
4) 1,3,4,2
5) 1,4,2,3
6) 1,4,3,2
dentro del codigo hay un seudo algoritmo el cual tampoco sirve, al implementarlo produce un resultado diferente al que produce el programa:
1) 1,2,3,4
2) 1,2,4,3
3) 1,3,2,4
4) 1,3,4,2
5) 1,4,2,3
6) 1,4,3,2
7) 2,1,3,4
8) 2,1,4,3
9) 2,3,1,4
10) 3,4,1,2
11) 4,2,1,3
12) 4,2,3,1
13) 4,3,1,2
14) 4,3,2,1
Es fácil de usar este programita generador de permutaciones. Tecleas en el edit
una permutación de hasta diez caracteres como máximo, no se puede repetir
ningún carácter, ej: 'aab' no es correcta, '213' si.
Con [Número] sabrás cuantas hay antes de ella en orden lexicográfico.
Con [Siguientes] se generarán todas las permutaciones que le siguen a la que
tecleaste en orden lexicográfico.
Con [Anteriores] se generarán todas las permutaciones que le preseden a la
que tecleaste en orden lexicográfico, pero decresiente.
le explico:
cuando pone usted 1234 el programa genera las siguientes a esa permutación con esos objetos (1,2,3,4). Claro que las que comienzan con 1 son 6, pero 1234 es la primera por lo que no se pone. Veamos las 6 permutaciones de 3 objetos enumeradas por el orden lexicográfico
1) 123
2) 132
3) 213
4) 231
5) 312
6) 321
si en el edit está 213, que es la tercera, al presionar el botón siguiente se pondrán en el memo la 4) , 5) y la 6) y se presiona el botón anteriores
se escribirán la 2) y la 1). Y con número obtendrá la cantidad que hay antes de ella, en este caso 2.
Y con todo respeto, si le interesa, debería revizar bien el código y el comentario del algoritmo porque este funcione correctamente.
¿Qué es seudo algoritmo?
1243, el código esta mal. Saludos.
Por otro lado, se supone que el No de combianaciones posibles de una cadena de n elementos es el factorial de n!, por lo cual si las combinaciones que nos da al combinar 1234 es de 24 combinaciones diferentes, el resultado es correcto