Agregar N elemetos a una Lista en Tiempo de Ejecución
domains
i=integer
li=i*
predicates
nondeterm ingreso(i,li)
nondeterm leer
clauses
ingreso(0,[]).
ingreso(N,L):- N1=N-1, ingreso(N1,L1),
write(”Ingrese Numero= “),
readint(E), L=[E|L1].
leer:- write(”Ingrese N= “),readint(N),N>0,
ingreso(N,L),
write(”Lista “,”\n”,L),nl.
goal
leer,
readln(_).
::::: Problema de Granjero ::::::
Ayuda al Granjero a pasar al Lobo, la oveja y su caja de Coles al otro lado del Río. La Canoa solo soporta al Granjero y tan solo una de sus pertenencias a la Vez.
Recuerda que:
Los Lobos comen Ovejas, Las Ovejas comen Coles.
::::: Canivales y Misioneros ::::::
Ayuda a los 3 Canibales y 3 Misioneros a trasladarse al otro lado del lago.
Ten en Cuenta que:
Solo pueden viajar dos a la vez.
Si el número de canibales supera al número de misioneros en algún lado del lago, estos se los comerán.
::::: Test Cruzar el Río ::::::
El objetivo es que la familia protagonista del juego junto a un policía y un ladrón crucen un río usando una balsa.
Para hacerlo existen cinco reglas:
1.- Sólo dos personas en la balsa por vez.
2.- El padre no puede estar con ninguna de sus hijas sin la presencia de su madre.
3.- La madre no puede estar con ninguno de sus hijos sin la presencia del padre.
4.- El ladrón (camisa a rayas) no puede estar con ningún miembro de la familia si el policía no esta ahí.
5.- Los que manejan la balsa son: el padre, la madre y el policía.
Para jugarlo, click en Links relacionados y luego, cuando aparece la pantalla con siglas en japonés hay que pinchar sobre el círculo azul en la parte inferior derecha de la pantalla.
Para mover a los protagonistas hay que hacer click sobre ellas. La balsa se moverá al pinchar sobre los tubos rojos a cada lado del río.
::::: PROLOG ::::::
1. Vegetal o Animal
Este pequeño programa permite determinar si un objeto es vegetal o animal.
eje01.pro
Domains
P=symbolPredicates
nondeterm animal(P)
nondeterm vegetal(P)
Clauses
animal(perro).
animal(gato).
animal(vaca).
animal(elefante).
animal(conejo).vegetal(coliflor).
vegetal(lechuga).
vegetal(rabanito).
vegetal(espinaca).
Goal
%vegetal(rabanito);
%animal(gato).
animal(Quienes).
2. Padre,Hermano
Permite determinar si un objeto es padre o hermano de otro.
eje02.pro
Domains
Persona=symbol
Predicates
nondeterm padre(Persona,Persona)
nondeterm hermano(Persona,Persona)
Clauses
padre(luis,alberto).
padre(luis,flor).
padre(luis,marina).
padre(carlos,miguel).
padre(carlos,carla).
% El signo :- significa SI?
hermano(X,Y):-padre(Z,X),padre(Z,Y).
Goal
%padre(Padre,marina).
%padre(luis,carla).
%padre(luis,Quienes).
hermano(flor,marina).
3. Quien observa a Quien
eje03.pro
Domains
Persona=symbol
Predicates
nondeterm observa(Persona,Persona)
Clauses
observa(brenda,gregorio).
observa(federico,gregorio).
observa(federico,felicia).
observa(miguel,guillermo).
observa(guillermo,roberto).
observa(guillermo,felipe).
observa(juan,juana).
Goal
%observa(guillermo,felipe).
%observa(guillermo,Quienes).
%observa(federico,roberto).
%observa(miguel,Quienes).
observa(guillermo,_).3
4. Promedio y Condición
requiere el Ingreso de 02 Notas para luego calcular el Promedio y su Codición(Aprobado, Desaprobado).
eje02.pro
Domains
p=real
q=symbol
Predicates
nondeterm determina(p,q)
Clauses
determina(Promedio,Condicion):- Promedio>=10.5, Condicion=aprobado.
determina(Promedio,Condicion):- Promedio<10.5, Condicion=desaprobado.
Goal
write(”Ingrese la Primera Nota: “),
readint(N1),
write(”Ingrese la Segunda Nota: “),
readint(N2),
Prom=(N1+N2)/2,
determina(Prom, Cond),nl,
write(”El Promedio del Alumno es: “,Prom),nl,
write (”La Condicion del Alumno es : “,Cond),nl,nl,fail.
5. Boleta de Venta
Requiere la cantidad y precio del producto a comprar para calcular: Importe, Descuento, valor de Venta, IGV y total a Pagar.
eje05.pro
Predicates
nondeterm descuento(real,real)
Clauses
descuento(Importe,Descuento):- Importe>200, Descuento=0.1*Importe; Descuento=0.05*Importe.
Goal
write(”Ingrese Cantidad de Productos: “),
readint(Q),
write(”Ingrese el Precio del Producto: “),
readreal(Pu),
Imp=Q*Pu,
descuento(Imp, Desc),nl,
ValVenta=Imp-Desc,
Igv=0.19*ValVenta,
Total=ValVenta+Igv,
write(”El Importe es: “,Imp),nl,
write (”El Descuento es : “,Desc),nl,
write (”El Valor de Venta es : “,ValVenta),nl,
write (”El IGV es : “,Igv),nl,
write (”El Total a Pagar es : “,Total),nl,nl,fail.
6. Horas de Trabajo Extras
Determina el salario neto de un trabajador conociendo el núemro de horas trabajadas y la tarifa normal en las
siguientes condiciones
Si N º horas trabajadas es > 40 entonces se le pagara un 50% más para las horas extras que superan a 40.
eje06.pro
Predicates
nondeterm salario(integer,real,real)
Clauses
salario(Horas,Tarifa,Total):- Horas>40, Total=(40*Tarifa) + ((Horas-40)*(Tarifa*1.5));
Horas<=40, Total=Horas*Tarifa.
Goal
write(”Ingrese Cantidad de Horas: “),
readint(Hor),
write(”Ingrese la Tarifa: “),
readreal(Tar),nl,
salario(Hor,Tar,Total),
write(”Su Salario es: “,Total),nl.
7. Secuencia de Numeros
Muestra lo siguiente:
5 25
4 16
3 9
2 4
1 1
— —
15 55
eje07.pro
Predicates
nondeterm p(real,real,real)
Clauses
p(X,S1,S2):- X<=5, C=X*X,
writef(”%8%8″,X,C),nl,
Sum1=S1+X,
Sum2=S2+C,
Y=X+1,
p(Y,Sum1,Sum2);
writef(”%10%9″,”—-”,”—-”),nl,
writef(”%8%8″,S1,S2),nl.
Goal
p(1,0,0).