Ejercicios de Prolog..
EJERCICIO 1
domains
lista=integer*
predicates
concatenar(lista,lista,lista)
elementos_pares(lista,lista)
elementos_impares(lista,lista)
mezclar(lista,lista,lista)
elemento_de(integer,lista,symbol)
elemento_de(integer,lista)
no_pertenece_a(integer,lista)
es_principio_de(lista,lista)
contenido_en(lista,lista)
clauses
concatenar([],L,L).
concatenar([XY],L,[XC]):-concatenar(Y,L,C).
elementos_pares([_,YU],[YL]):-
elementos_pares(U,L).
elementos_pares([_],[]).
elementos_pares([],[]).
elementos_impares([X,_U],[XL]):-
elementos_impares(U,L).
elementos_impares([_],[]).
elementos_impares([],[]).
mezclar([XY],[ST],[X,SL]):-mezclar(Y,T,L).
mezclar([],[],[]).
elemento_de(X,[X_],verdadero):-!.
elemento_de(X,[_L],R):-elemento_de(X,L,R).
elemento_de(_,[]):-FAIL.
elemento_de(X,[X_]):-!.
elemento_de(X,[_L]):-elemento_de(X,L).
no_pertenece_a(X,L):-NOT(elemento_de(X,L)).
es_principio_de([XY],[XL]):-es_principio_de(Y,L).
es_principio_de([],_).
contenido_en([XM],L):-elemento_de(X,L).
contenido_en(M,L).
contenido_en([],_).
EJERCICIO 2
domains
listamenu=symbol*
dia=symbol
predicates
menu(listamenu,dia)
clauses
menu
([menu,langostinos,mora,blanco,frijoles,churrasco,arroz,roja,helado],lunes).
menu([menu,mariscos,lulo,tinto,lentejas,mojarra,cebada,tomate,leche],martes).
menu([menu,caviar,tomate,gato,calabaza,lasa¤a,verduras,lechuga,arequipe],miercoles).
menu([menu,miel,uva,cafeinado,verdura,cerdo,lentejas,tomillo,brevas],jueves).
menu([menu,aceitunas,guayaba,manzana,platano,chatas,frijoles,laurel,helado],viernes).
GUIA 2
EJERCICIO 1
domains
nombre,sexo,interes=symbol
intereses=interes*
predicates
encuentrapares
persona(nombre,sexo,interes)
interes_comun(intereses,intereses,interes)
miembro(interes,intereses)
clauses
encuentrapares:-
persona(H,m,L1),
persona(M,f,L2),
interes_comun(L1,L2,_),v write(H, " Puede gustarle ",M),nl,fail.
encuentrapares:- write("fin de la lista").
interes_comun(L1,L2,X):-
miembro(X,L1),
miembro(X,L2),!.
persona(juan,m,[viajes,libros,bicicleta]).
persona(maria,f,[cine,libros,tenis]).
miembro(X,[X_]).
miembro(X,[_C]):-miembro(X,C).
EJERCICIO 2
domains
predicates
mul(integer,integer)
clauses
mul(X,Y) :- X<21,
F=X*Y,
write(X,"*",Y,"=",F,"\n"),NL,
N=X+1,
readchar(_),
mul(N,Y).
GUIA 3
EJERCICIO 1
predicates
nondeterm for(integer,integer,integer)
nondeterm repeat
continue
clauses
for(Cur,_,Cur).
for(Cur,Max,I):-Cur
EJERCICIO 2
integerlist=integer*
Predicates
lee(integerlist)
impar(integerlist,integerlist)
clauses
impar([],[]) :-
impar([HT1],[HT2]) :-
1=H mod 2, ! ,
impar(T1,T2).
impar([_T1],T2) :-
impar(T1,T2).
lee([IntT) :-
write("Ingrese un entero: ") , readint(Int), ! , lee(T).
lee([]).
Goal
makewindow(1,2,3,"LISTA IMPAR",0,0,25,80),
write("Entre los enteros que hacen la lista.\n", "(ENTER para el fin de la lista.)\n\n"),
lee(List), impar(List,Odds),
write("\nLa lista completa es: ",List,"\List,"\nla lista impar es: ",Odds),write("\n\nPresione una tecla..."),
readchar(_).
GUIA 4
EJERCICIO 1
integerlist=integer*
Predicates
lee(integerlist)
impar(integerlist,integerlist)
clauses
impar([],[]) :-
impar([HT1],[HT2]) :-
1=H mod 2, ! ,
impar(T1,T2).
impar([_T1],T2) :-
impar(T1,T2).
lee([IntT) :-
write("Ingrese un entero: ") , readint(Int), ! , lee(T).
lee([]).
Goal
makewindow(1,2,3,"LISTA IMPAR",0,0,25,80),
write("Entre los enteros que hacen la lista.\n", "(ENTER para el fin de la lista.)\n\n"),
lee(List),
impar(List,Odds),
write("\nLa lista completa es: ",List,"\List,"\nla lista impar es: ",Odds),write("\n\nPresione una tecla..."),
readchar(_).
EJERCICIO 2
domains
reallist=real*
predicates
promedio(reallist,real)
longitud(reallist,real,real)
suma(reallist,real,real)
lee(reallist)
clauses
promedio(List,Pro) :-
longitud(List,0,Long),
suma(List,0,Suma),
Pro=Suma/Long.
longitud([],L,L) :- !.
longitud([_T],Temp_long,Long):-
Nuev_temp=Temp_long+1,
longitud(T,Nuev_temp,Long).
suma([],S,S) :-!.
suma([NumT],Temp_sum,Sum):-
Nuev_temp=Num+Temp_sum,
suma(T,Nuev_temp,Sum).
lee([HT]) :-
write("Entre un numero real: "),
readreal(H),
!,lee(T).
lee([]).
Goal
makewindow(1,2,3," PROMEDIO DE ELEMENTOS DE UNA LISTA",0,0,25,80),
write("Favor ingresar la lista de numeros reales","(ENTER para el fin de la lista):\n\n"),
lee(List),nl,nl,promedio(List,Pro),
write("La lista es: \n",List),
writef("\n\nEl promedio es: %.\n",Pro).
EJERCICIO 3
domains
integerlist=integer*
predicates
par(integer,integerlist)
lee(integerlist)
escribe(integerlist)
clauses
par(Head,[Head_]) :-
0=Head mod 2.
par(Element,[_Tail]) :-
par(Element,Tail).
lee([HT]) :-
write("Ingrese un numero: "),
readint(H),!,
lee(T).
lee([]).
escribe(L) :- par(E,L), write(E,"\n"),fail. escribe(_).
goal
makewindow(1,2,3,"NUMEROS PARES DE UNA LISTA ",0,0,25,80),
write("Por favor entre un entero que ", "quiere incluir a la lista.\n", "(ENTER y ningun entero para finalizar la lista.)\n\n"),
lee(List),
write("\Esta es la lista completa",List,":\n\n),
escribe(List),
write("\presione una tecla..."),
readchar(_).
EJERCICIO 4
domains
integerlist=integer*
predicates
suma(integerlist,integer)
lee(integerlist)
clauses
suma([],0) :- !.
suma([NumT],Sum) :- suma(T,Suma_cola), Sum=Num+Suma_cola.
lee([HT]) :-
write("Ingrese un entero: "),
readint(H), !,
lee(T).
lee([]).
goal
makewindow(1,2,3,"SUMA DE ENTEROS DE UNA LISTA",0,0,25,80),
write("Por favor ingrese los enteros de la lista a sumar.\n","(ENTER para el fin de la lista) \n"),
lee(List),
suma(List,Sum),
clearwindow,
write("\n\nLa lista ingresada es: ",List,"\n"),
write("La suma de los elementos de la lista es: ",Sum,"\n").
EJERCICIO 1
domains
lista=integer*
predicates
concatenar(lista,lista,lista)
elementos_pares(lista,lista)
elementos_impares(lista,lista)
mezclar(lista,lista,lista)
elemento_de(integer,lista,symbol)
elemento_de(integer,lista)
no_pertenece_a(integer,lista)
es_principio_de(lista,lista)
contenido_en(lista,lista)
clauses
concatenar([],L,L).
concatenar([XY],L,[XC]):-concatenar(Y,L,C).
elementos_pares([_,YU],[YL]):-
elementos_pares(U,L).
elementos_pares([_],[]).
elementos_pares([],[]).
elementos_impares([X,_U],[XL]):-
elementos_impares(U,L).
elementos_impares([_],[]).
elementos_impares([],[]).
mezclar([XY],[ST],[X,SL]):-mezclar(Y,T,L).
mezclar([],[],[]).
elemento_de(X,[X_],verdadero):-!.
elemento_de(X,[_L],R):-elemento_de(X,L,R).
elemento_de(_,[]):-FAIL.
elemento_de(X,[X_]):-!.
elemento_de(X,[_L]):-elemento_de(X,L).
no_pertenece_a(X,L):-NOT(elemento_de(X,L)).
es_principio_de([XY],[XL]):-es_principio_de(Y,L).
es_principio_de([],_).
contenido_en([XM],L):-elemento_de(X,L).
contenido_en(M,L).
contenido_en([],_).
EJERCICIO 2
domains
listamenu=symbol*
dia=symbol
predicates
menu(listamenu,dia)
clauses
menu
([menu,langostinos,mora,blanco,frijoles,churrasco,arroz,roja,helado],lunes).
menu([menu,mariscos,lulo,tinto,lentejas,mojarra,cebada,tomate,leche],martes).
menu([menu,caviar,tomate,gato,calabaza,lasa¤a,verduras,lechuga,arequipe],miercoles).
menu([menu,miel,uva,cafeinado,verdura,cerdo,lentejas,tomillo,brevas],jueves).
menu([menu,aceitunas,guayaba,manzana,platano,chatas,frijoles,laurel,helado],viernes).
GUIA 2
EJERCICIO 1
domains
nombre,sexo,interes=symbol
intereses=interes*
predicates
encuentrapares
persona(nombre,sexo,interes)
interes_comun(intereses,intereses,interes)
miembro(interes,intereses)
clauses
encuentrapares:-
persona(H,m,L1),
persona(M,f,L2),
interes_comun(L1,L2,_),v write(H, " Puede gustarle ",M),nl,fail.
encuentrapares:- write("fin de la lista").
interes_comun(L1,L2,X):-
miembro(X,L1),
miembro(X,L2),!.
persona(juan,m,[viajes,libros,bicicleta]).
persona(maria,f,[cine,libros,tenis]).
miembro(X,[X_]).
miembro(X,[_C]):-miembro(X,C).
EJERCICIO 2
domains
predicates
mul(integer,integer)
clauses
mul(X,Y) :- X<21,
F=X*Y,
write(X,"*",Y,"=",F,"\n"),NL,
N=X+1,
readchar(_),
mul(N,Y).
GUIA 3
EJERCICIO 1
predicates
nondeterm for(integer,integer,integer)
nondeterm repeat
continue
clauses
for(Cur,_,Cur).
for(Cur,Max,I):-Cur
EJERCICIO 2
integerlist=integer*
Predicates
lee(integerlist)
impar(integerlist,integerlist)
clauses
impar([],[]) :-
impar([HT1],[HT2]) :-
1=H mod 2, ! ,
impar(T1,T2).
impar([_T1],T2) :-
impar(T1,T2).
lee([IntT) :-
write("Ingrese un entero: ") , readint(Int), ! , lee(T).
lee([]).
Goal
makewindow(1,2,3,"LISTA IMPAR",0,0,25,80),
write("Entre los enteros que hacen la lista.\n", "(ENTER para el fin de la lista.)\n\n"),
lee(List), impar(List,Odds),
write("\nLa lista completa es: ",List,"\List,"\nla lista impar es: ",Odds),write("\n\nPresione una tecla..."),
readchar(_).
GUIA 4
EJERCICIO 1
integerlist=integer*
Predicates
lee(integerlist)
impar(integerlist,integerlist)
clauses
impar([],[]) :-
impar([HT1],[HT2]) :-
1=H mod 2, ! ,
impar(T1,T2).
impar([_T1],T2) :-
impar(T1,T2).
lee([IntT) :-
write("Ingrese un entero: ") , readint(Int), ! , lee(T).
lee([]).
Goal
makewindow(1,2,3,"LISTA IMPAR",0,0,25,80),
write("Entre los enteros que hacen la lista.\n", "(ENTER para el fin de la lista.)\n\n"),
lee(List),
impar(List,Odds),
write("\nLa lista completa es: ",List,"\List,"\nla lista impar es: ",Odds),write("\n\nPresione una tecla..."),
readchar(_).
EJERCICIO 2
domains
reallist=real*
predicates
promedio(reallist,real)
longitud(reallist,real,real)
suma(reallist,real,real)
lee(reallist)
clauses
promedio(List,Pro) :-
longitud(List,0,Long),
suma(List,0,Suma),
Pro=Suma/Long.
longitud([],L,L) :- !.
longitud([_T],Temp_long,Long):-
Nuev_temp=Temp_long+1,
longitud(T,Nuev_temp,Long).
suma([],S,S) :-!.
suma([NumT],Temp_sum,Sum):-
Nuev_temp=Num+Temp_sum,
suma(T,Nuev_temp,Sum).
lee([HT]) :-
write("Entre un numero real: "),
readreal(H),
!,lee(T).
lee([]).
Goal
makewindow(1,2,3," PROMEDIO DE ELEMENTOS DE UNA LISTA",0,0,25,80),
write("Favor ingresar la lista de numeros reales","(ENTER para el fin de la lista):\n\n"),
lee(List),nl,nl,promedio(List,Pro),
write("La lista es: \n",List),
writef("\n\nEl promedio es: %.\n",Pro).
EJERCICIO 3
domains
integerlist=integer*
predicates
par(integer,integerlist)
lee(integerlist)
escribe(integerlist)
clauses
par(Head,[Head_]) :-
0=Head mod 2.
par(Element,[_Tail]) :-
par(Element,Tail).
lee([HT]) :-
write("Ingrese un numero: "),
readint(H),!,
lee(T).
lee([]).
escribe(L) :- par(E,L), write(E,"\n"),fail. escribe(_).
goal
makewindow(1,2,3,"NUMEROS PARES DE UNA LISTA ",0,0,25,80),
write("Por favor entre un entero que ", "quiere incluir a la lista.\n", "(ENTER y ningun entero para finalizar la lista.)\n\n"),
lee(List),
write("\Esta es la lista completa",List,":\n\n),
escribe(List),
write("\presione una tecla..."),
readchar(_).
EJERCICIO 4
domains
integerlist=integer*
predicates
suma(integerlist,integer)
lee(integerlist)
clauses
suma([],0) :- !.
suma([NumT],Sum) :- suma(T,Suma_cola), Sum=Num+Suma_cola.
lee([HT]) :-
write("Ingrese un entero: "),
readint(H), !,
lee(T).
lee([]).
goal
makewindow(1,2,3,"SUMA DE ENTEROS DE UNA LISTA",0,0,25,80),
write("Por favor ingrese los enteros de la lista a sumar.\n","(ENTER para el fin de la lista) \n"),
lee(List),
suma(List,Sum),
clearwindow,
write("\n\nLa lista ingresada es: ",List,"\n"),
write("La suma de los elementos de la lista es: ",Sum,"\n").
No hay comentarios:
Publicar un comentario