Examen Parcial - 75.23. Inteligencia Artificial - 17/11/06

Cátedra: Cabrera
Fecha: Primera Oportunidad - Segundo Cuatrimestre 2006
Día: 17/11/2006

Enunciado

  1. Escriba un predicado que, dado un número, devuelva una lista con ése y sus anteriores mayores a 0
  2. Escriba un predicado que, dada una lista, retorne el menor de sus elementos
  3. Escriba un predicado que, dados dos números y una lista, determine si aparecen de manera consecutiva en la misma

Resolución

domains
	lista = integer*

predicates
	nondeterm anteriores(integer,lista)

	nondeterm ady(integer,integer,lista)
	
	nondeterm minLista(lista,integer)

	%Auxiliar para encontrar el mínimo entre dos números
	nondeterm elMenor(integer,integer,integer)

clauses

	%Si el número es cero, no tiene anteriores
	anteriores(0,[]):-!.
	%Si no, se agrega el número como cabeza, y se genera una cola con sus anteriores
	anteriores(X,[H|T]) :- H = X, X1 = X-1,anteriores(X1,T).
	
	%El mínimo de una lista de un elemento es él mismo
	minLista([X],X).
	%O es el mínimo entre la cabeza y el mínimo de la cola
	minLista([H|T],Min):-minLista(T,R), elMenor(H,R,Min).

	%El mínimo entre dos es uno
	elMenor(X,Y,X):- X<Y,!.
	%O el otro
	elMenor(_,Y,Y).

	%Dos números son adyacentes en una lista si son el primero y el segundo
	ady(X,Y,[X,Y|_]).
	%O saco la cabeza, y compruebo la cola
	ady(X,Y,[_|T]):- ady(X,Y,T).

Discusión

Si ves algo que te parece incorrecto en la resolución y no te animás a cambiarlo, dejá tu comentario acá.
materias/75/23/parcial_0_20061117_1.txt · Última modificación: 2006/11/18 14:54 por mariano
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia: CC Attribution-Noncommercial-Share Alike 3.0 Unported


Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki