Prolog
Esta sección de mi sitio está dedicada a divulgar mis trabajos de Inteligencia Artificial (IA) programados en Prolog. Para poder ejecutar ambos códigos de IA, se debe tener instalado el swi-prolog desde http://www.swi-prolog.org antes de descargar susodichos códigos. Otro requisito es saber ejecutar un programa en Prolog.
- El primero que aquí les presento sirve para calcular la permutación eN-ésima de una lista dada.
- El segundo código que deseo presentarles es un programa que juega Master mind.
Permutación eN-ésima de una lista
generar_permutacion ( N, Lista, Lista_permutada).
Por ejemplo, si tenemos la lista [p, b, v, f], podemos calcular cualquiera de sus permutaciones específicas, sin necesidad de calcularlas todas:
1 ?- generar_permutacion( 4, [p, b, v, f], Lista_permutada).
Lista_permutada = [p, f, b, v]
2 ?- generar_permutacion( 16, [p, b, v, f], Lista_permutada).
Lista_permutada = [f, b, p, v]
3 ?- generar_permutacion( 7, [p, b, v, f], Lista_permutada ).
Lista_permutada = [b, p, v, f]
4 ?- generar_permutacion( 21, [p, b, v, f], Lista_permutada).
Lista_permutada = [v, b, f, p]
Este programa mío NO se debe confundir con el sencillo predicado que calcula todas 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).
Master mind
1 ?- master_mind.
juego de ingenio
master mind
combinación propuesta: [1,3,5,4]
¿Digito correcto y lugar correcto?: 2.
¿Dígito correcto y lugar incorrecto?: |: 1.
intento: 1
—————–
combinación propuesta: [3,0,5,4]
¿Digito correcto y lugar correcto?: |: 1.
¿Dígito correcto y lugar incorrecto?: |: 3.
intento: 2
—————–
combinación propuesta: [5,3,0,4]
¿Digito correcto y lugar correcto?: |: 4.
¿Dígito correcto y lugar incorrecto?: |: 0.
intento: 3
—————–
¡¡¡¡Solución!!!!
5,3,0,4 | lugar | dígito |
---|---|---|
1,3,5,4 | 2 (el 3 y el 4) | 1 (el 1) |
3,0,5,4 | 1 (el 4) | 3 (el 3, el 0 y el 5) |
5,3,0,4 | 4 | 0 solución |