Cátedra: Cabrera
Fecha: Primera Oportunidad - Primer Cuatrimestre 2007
Día: 08/06/2007
%Ej.1 Domains lent = integer* Predicates nondeterm Menores (integer, lent) clauses Menores (0, []). Menores (N, [N|L]):- N > 0, N1=N-1, Menores (N1, L). goal Menores (5, X1),
%Ej.2 Domains lista = elemento* elemento = e(symbol); l(lista) Predicates nondeterm Prof (lista, integer, integer) nondeterm Mayor (integer, integer, integer) clauses Prof ([], N, N). Prof ([l(Ca)|Co], N,P):- N1=N+1, Prof (Ca, N1, P1), Prof (Co, N, P2), Mayor (P1, P2, P). Prof ([e(_)|Co],N, P):- Prof (Co, N, P1), Mayor (N, P1, P). Mayor (A, B, X):- A >= B, X = A. Mayor (A, B, X):- B > A, X = B. goal Prof ([e(a), e(b), l([e(c), e(d), e(e), l([e(f), e(g)]), e(h)]), e(i), l([e(j), e(k)]), e (l)], 1, X).
%Ej.3 Domains Lsym = symbol* Predicates nondeterm Reemp (Lsym, symbol, symbol, Lsym) clauses Reemp ([],_,_,[]). Reemp ([Ca1|Co1],Ca1, Ca2,[Ca2| Co2]):-Reemp( Co1,Ca1,Ca2, Co2). Reemp ([Ca1|Co1],X, Y,[Ca1|Co2] ):-X<>Ca1, Reemp(Co1, X,Y,Co2). goal Reemp ([a,b,c,d,e, f,g,h],d, x,L).
%Ej.4 Domains Lsym = symbol* Predicates nondeterm Juntos (Lsym, symbol, symbol) clauses Juntos ([Ca1|[Ca2|_ ]], Ca1, Ca2). Juntos ([Ca1|[Ca2|_ ]], Ca2, Ca1). Juntos ([_|[Ca2|Co] ], A, B):- Juntos ([Ca2|Co], A, B). goal Juntos ([a,b,c,d,e,f,g,h],d, c).