sábado, 30 de enero de 2016

EJERCICIOS EN PROLOG

INTRODUCCIÓN
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

   
 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

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


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.
 

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/


No hay comentarios:

Publicar un comentario