INTRODUCCIÓN
ultimo(C,X) :-append(_,[C],X).
El objetivo de este bloc es presentar algunos ejercicios realizados durante el curso de Inteligencia Artificial II. Todos estos ejercicios han sido comprobados en prolog para garantizar el correcto funcionamiento.
DESARROLLO
1. Elabore un predicado
para determinar el último de una lista teniendo en cuanta que:
q X es el último elemento de una lista que tiene a X como único elemento
q X es el último elemento de una lista que tiene cabeza y cola si X es el último de la cola
q X es el último elemento de una lista que tiene a X como único elemento
q X es el último elemento de una lista que tiene cabeza y cola si X es el último de la cola
ultimo(C,X) :-append(_,[C],X).
1 ?- ultimo(X,[1,2,3,4,5]).
X = 5
2. Elabore un
predicado que permita clasificar números en positivos cero o negativo (no se
utiliza listas).
clasificar(Numero,positivo):-Numero>0.
clasificar(0,cero).
clasificar(Numero,negativo):-Numero<0.
3 ?- clasificar(3,X).
X = positivo
3. Elabore un predicado
que obtenga la suma de los elementos de una lista sabiendo que:
1. La suma S es cero si la lista está vacía
2. La suma de una lista con E1 en la cabeza y L en la cola es S si S1 es la suma de los elementos de la cola y S es S1 + E1
1. La suma S es cero si la lista está vacía
2. La suma de una lista con E1 en la cabeza y L en la cola es S si S1 es la suma de los elementos de la cola y S es S1 + E1
suma_lista([],0).
suma_lista([C|L],Y) :-suma_lista(L,Y1),Y is C+Y1.
4 ?- suma_lista([1,3,4],X).
X = 8.
4. Elabore un predicado
que obtenga el factorial de un número sabiendo que:
1. Factorial de cero es 1
2. F es factorial de N si N > 0, Na es N-1, factorial de Na es F1 y F es F1 * N
1. Factorial de cero es 1
2. F es factorial de N si N > 0, Na es N-1, factorial de Na es F1 y F es F1 * N
factorial(N,F) :- N>1, N1 is N-1, factorial(N1,F1), F is N*F1.
factorial(N,F) :- N=1, F is 1.
5 ?- factorial(5,X).
X = 120
5. Elabore un
predicado que obtenga la cantidad de elementos de una lista sabiendo que:
1. cantidad de elementos de una lista vacía
es cero
2. Cantidad de elementos de una lista que
tiene cabeza y cola es cantidad de elementos de la cola +1
contar([],0).
contar([X|Cola],Num):-!,contar(Cola,Tam),Num is Tam+1.
6 ?- contar([1,2,3],X).
X = 3.
6. Elabore un predicado
que obtenga el promedio de valores almacenados en una lista.
sumaElem([X],X):-!.
sumaElem([X|Y],S):-sumaElem(Y,T),S is T + X.
long([],0):-!.
long([_X|Y],S):-long(Y,T), S is T+1.
promedio([X],X):-!.
promedio(L,P):-sumaElem(L,S),long(L,R),P is (S/R).
7 ?- promedio([2,4,5],X).
X = 3.6666666666666665.
7. Elabore un predicado que permita saber si una lista está ordenada
ascendentemente sabiendo que:
1. una lista que tiene un solo elemento está ordenada
2. una lista con X,Y en la cabeza y C en la cola está ordenada si X<Y y está ordenada la lista con Y en la cabeza y C en la cola.
1. una lista que tiene un solo elemento está ordenada
2. una lista con X,Y en la cabeza y C en la cola está ordenada si X<Y y está ordenada la lista con Y en la cabeza y C en la cola.
ordenada([_]).
ordenada([X,Y|L]) :-X =< Y,ordenada([Y|L]).
14 ?- ordenada([1,2,3,4]).
true
CONCLUSIÓN
Los ejercicios realizados en clases permitieron fortalecer los conocimientos adquiridos en el aula.
BIBLIOGRAFÍA
Alonso, J. 2010. Ejercicios de programación declarativa en
prolog. (En línea). ES. Consultado, 20 de ene. 2016.
Formato PDF. Disponible en: http://www.cs.us.es/~jalonso/
Carlos, J; Berzal, F. 2011. Relación de ejercicios prolog. (En
línea). ES. Consultado, 20 de ene. 2016. Formato PDF. Disponible en:
http://elvex.ugr.es/decsai/
Walls, D. 2010. Aprendiendo a usar prolog. (En línea). ES.
Consultado, 21 de ene. 2016. Formato HTML. Disponible en: http://swi-prolog.blogspot.com/