Está en la página 1de 3

Archivo: /media/KINGSTON/kingston/Prolog/Prolog/proyecto2.

pl Pgina 1 de 3
% Ejercicio 1
vocales([],[]).
vocales([X|L1],[X|L2]):-vocal(X), vocales(L1,L2).
vocales([X|Z],Resto):- vocales(Z,Resto).
vocal(a).
vocal(e).
vocal(i).
vocal(o).
vocal(u).
% Ejercicio 2
pares([],[]).
pares([X],[]).
pares([X,Y|L1],[Y|L2]):- pares(L1,L2).
pares([X,Y|L3],Resto):- pares(L3,Resto).
% Ejercicio 3
esLista([]).
esLista([X|Y]):- esLista(Y).
% Ejercicio 4
substraer([],_,[]).
substraer([X|L1],L2,L3) :- pertenece(X,L2), substraer(L1,L2,L3).
substraer([X|L1],L2,[X|L3]) :- substraer(L1,L2,L3).
substraer([X|L1],L2, Resto) :- substraer(L1,L2,Resto).
pertenece(X,[X|_]).
pertenece(X,[_|L]) :- pertenece(X,L).
% Ejercicio 5
obtener([],_,[]).
obtener([X|L1],K,[X|L2]) :- K >= 1, K1 is K-1,obtener(L1,K1,L2).
obtener([X|L], 0,Resto) :- obtener(L,0,Resto).
% Ejercicio 6
repetidos([],[]).
repetidos([X|L1],[X|L2]) :- pertenece(X,L1), elimina(X,L1,L3), repetidos(L3,L2).
repetidos([X|Z], [X|Resto]) :- repetidos(Z,Resto).
elimina(_,[],[]).
elimina(X,[Y|L1],[Y|L2]) :- X \= Y, elimina(X,L1,L2).
elimina(X,[X|L1],L2) :- elimina(X,L1,L2).
pertenece(X,[X|_]).
pertenece(X,[_|L]) :- pertenece(X,L).
% Ejercicio 7
max3(X,Y,Z,X) :- X >= Y, X >= Z.
max3(X,Y,Z,Y) :- Y >= X, Y >= Z.
max3(X,Y,Z,Z) :- Z > X, Z > Y.
% Ejercicio 8
doble([],[]).
doble([X|L1],[Y|L2]) :- Y is X*2, doble(L1,L2).
% Ejercicio 9
suma(1,1).
suma(X,N) :- Y is X-1, suma(Y,F), N is X + F.
% Ejercicio 10
Archivo: /media/KINGSTON/kingston/Prolog/Prolog/proyecto2.pl Pgina 2 de 3
duplicar([],[]).
duplicar([X|L1],[X,X|L2]) :- duplicar(L1,L2).
% Ejercicio 11
extraer([],[]).
extraer([X|L1],[Y|L2]) :- palabra(X),siguiente(L1,[Y|L2]), extraer(L1,L2).
extraer([X|Z],Resto) :- extraer(Z,Resto).
siguiente([X|L],[X|L2]).
palabra(el).
palabra(la).
%Ejercicio 12
bbb([],[]).
bbb(A,[X|F]) :- append(F,[X],A).
% ?- bbb(L,[a,b,c]).
% bbb(L,[a|[b,c]] :- append([b,c],[a],L).
% L = [b,c,a]
% Este ejercicio toma el primer elemento de una lista
% y lo pasa a la cola de la misma la funcion de append
% consiste en concatenar el elemento como una lista el
% extraido con resto de la lista.
% Ejercicio 13
a(1, 2).
a(3, 5).
a(R, S):-b(R, S), b(S, R).
b(1, 3).
b(2, 3).
b(3, T):- b(2, T), b(1, T).
/*
Submeta Clausula Resultado
a(X,Y) 1 X = 1, Y=2, 3 submetas
b(1,2) 4 falla
b(1,2) 5 falla
b(1,2) 6 falla
a(1,2) falla
a(3,5) 2 X = 3 , Y = 5 , 3 submetas
b(3,5) 4 falla
b(3,5) 5 falla
b(3,5) 6 X=3 , T=5 , 2 submetas
b(2,5) 4 falla
b(2,5) 5 falla
b(2,5) 6 falla
a(3,5) falla
a(R,S) 3 X = R ,Y = S , 2 submetas
b(R,S) 4 R = 1,S = 3
b(3,1) 4 falla
b(3,1) 5 falla
b(3,1) 6 S=3,T=1, 2 submetas
b(2,1) 4 falla
b(2,1) 5 falla
b(2,2) 6 falla
b(R,S) 5 R = 2 , S = 3
b(3,2) 6 S = 3, T = 2, 2 submetas
b(2,2) 4 falla
b(R,S) 6 R = 3, S = T, 2 submetas
b(2,T) 4 falla
b(2,T) 5 T = 3
b(1,3) 4 se cumple, como X = R , Y = S, entonces X = 3 , Y = 3

a(X,Y),b(X,Y).
Archivo: /media/KINGSTON/kingston/Prolog/Prolog/proyecto2.pl Pgina 3 de 3
X = 3.
Y = 3.
solo hay una solucion
*/
% Ejercicio 14
tablasMultiplicacion :- X is 0, Y is 0, insertar(X,Y).
insertar(10,_).
insertar(X,Y) :- inserta2(X,Y),J is X + 1,K is 0, insertar(J,K).
inserta2(_,10).
inserta2(X,Y) :- Z is X*Y, asserta(multiplicacion(X,Y,Z)), Y2 is Y + 1, inserta2(X,Y2).
% Ejercicio 15
edad(juan, 25).
edad(maria, 32).
edad(pedro, 10).
sexo(juan, masculino).
sexo(maria, femenino).
combinar :- edad(A,B),sexo(A,C),assertz(edadSexo(A,B,C)).
% Ejercicio 16
hijo(pedro,juan).
hijo(roberto,juan).
hijo(mariano,juan).
hijo(jose,jorge).
listaHijos(X,L) :- findall(Y,hijo(Y,X),L).
% Ejercicio 17
aMinuscula(X,Y) :- downcase_atom(X, Y).

También podría gustarte