Prolog

Otro de mis intereses científicos, es la informática. Específicamente la programación en Prolog. Este lenguaje Prolog está orientado a elaborar proyectos en materia de Inteligencia Artificial. Yo tengo una tesis que consiste en un programa que es capaz de jugar Master-mind. Siempre adivina la combinación.

En cambio aquí les presento un fragmento de susodicho código que sirve para calcular la permutación eN-ésima de una lista dada. No se debe confundir con el sencillo predicado que calcula las permutaciones de una lista. Que es el siguiente breve código:

permutacion(Bs, [A|As]):-
concatenar(Xs, [A|Ys], Bs),
concatenar(Xs, Ys, Zs),
permutacion(Zs, As).
permutacion([], []).

concatenar([],L,L).
concatenar([X|L1],L2,[X|L3]):-
concatenar(L1,L2,L3).

Se puede descargar el programa pinchando aquí. El programa se llama «permutación_enésima_p_web.pro». Para poder ejecutarlo hay que instalar swi-prolog desde http://www.swi-prolog.org Durante la instalación debe escogerse como extensión de los programas a «.pro». Basta con hacer doble click sobre el ícono del programa para que se abra el mismo y aparezca el prompt de Prolog que es:

1?-
/* este programa es capaz de generar la enésima permutación de cualquier lista */
generar_permutacion (Momento, Matriz, Matriz_permutada).

Por ejemplo:

1 ?- generar_permutacion( 4, [p, b, v, f], M).
M = [p, f, b, v]
2 ?- generar_permutacion( 16, [p, b, v, f], M).
M = [f, b, p, v]
3 ?- generar_permutacion( 7, [p, b, v, f], M).
M = [b, p, v, f]
4 ?- generar_permutacion( 21, [p, b, v, f], M).
M = [v, b, f, p]