[Bulma] [OT] Generar/calcular permutaciones.

Mateu Mir mateu.mir en gmail.com
Jue Ene 17 23:05:43 CET 2008


Hola Marcos.

Creo que lo que buscas son variaciones de N elementos de una lista.
Pues bien, yo tengo una función que te permite hacer esto. Esta
escrita para prolog te la pego aqui abajo.
La he probado, i para variaciones de 5 caracteres del alfabeto me ha
tardado  168082 ms, casi unos tres minutos.

La función:
/**/
varia(0, _, []).
varia(A, B, [C|D]) :-
        A > 0,
        E is A - 1,
        select(C, B, F),
        varia(E, F, D).
/**/

Para ejecutarla al haber cargado el fichero:

| ?- varia(5,[a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,v,w,x,y,z],A).

Despues pulsa a (all) i te dara todas las soluciones.


Un saludo!

2008/1/17, Marcos Ramírez <mrpamarcos-ramirez.info>:
>         Buenas (y feliz año con retraso),
>
> Tras una hora googleando, no he encontrado lo que quiero, y os consulto por si
> alguno sabe de alguna herramienta para lo que necesito, que es, un
> programa/función/clase que pasandole una cadena de texto me devuelva las
> permutaciones posibles de dicha cadena de texto, pero, permitiendome
> establecer un limite de caracteres en las cadenas generadas, me explico, si
> le paso el abecedario, que me pase todas las combinaciones de N letras pero
> contando con todas las letras del abecedario.
>
> ¿Alguien sabría decirme uno rápido y que no me debore la máquina? (que es lo
> que me pasa con el que he programado yo xD).
>
> Gracias por anticipado
> --
> Marcos Ramirez (www.marcos-ramirez.info) .:: Linux Registered User #349823 ::.
> Debian SID Kernel 2.6.21.6.
>
> Antes de preguntar nada, lee! y recuerda, Google es tu amigo, yo no.
> http://www.sindominio.net/ayuda/preguntas-inteligentes.html
>
> No acepto adjuntos en formato WORD/Office:
> http://breu.bulma.net/?l3192
>
> _______________________________________________
> Bulmailing mailing list
> Bulmailingabulma.net
> http://llistes.bulma.net/mailman/listinfo/bulmailing
> Etiqueta: http://breu.bulma.net/?l676
>


Más información sobre la lista de distribución Bulmailing