ayudame por favor

delfin13
24 de Junio del 2009
ayudame por favor no entiendo prolog y tengo que hacer este ejercicio. mil gracias

LÍQUIDOS VENENOSOS
El Sr. Despistado, el químico, tiene seis frascos llenos de líquidos coloreados Hay uno de cada color: rojo, anaranjado, amarillo, verde, azul y violeta. El señor Despistado sabe que algunos de esos líquidos son tóxicos, pero no recuerda cuales..

Sin embargo, sı recuerda algunos datos. En cada uno de los siguientes pares de frascos hay uno con veneno y otro no:
a) los frascos violeta y azul
b) los frascos rojo y amarillo
c) los frascos azul y anaranjado
El Sr. Despistado recuerda también que en estos otros pares de frascos hay uno sin veneno:
d) el violeta y el amarillo
e) el rojo y el anaranjado
f) el verde y el azul
¡Ah! Casi lo olvido, añade el Sr. Despistado, el lıquido del frasco rojo no es venenoso. ¿Que frascos tienen veneno?

skyburn
24 de Junio del 2009
resolver:-
assert (no_venenoso (rojo)),
assert (venenoso (x):-fail),
assert (no_venenoso (x):- fail),
assert (visitada_regla (x):- fail),
procesar.

no (x):-
x,
!,
fail
no (x)
% 2-. Con veneno uno sí otro no:
% a) los frascos violeta y azul
% b) los frascos rojo y amarillo
% c) los frascos azul y anaranjado

% Regla 1
procesar:-
venenoso (violeta),
no (visitada_regla (1)),
assert (no_venenoso (azul)),
assert (visitada_regla (1)),
procesar.

procesar:-
no_venenoso (violeta),
no (visitada_regla (1)),
assert (venenoso (azul)),
assert (visitada_regla (1)),
procesar.

procesar:-
venenoso (azul),
no (visitada_regla (1)),
assert (no_venenoso (violeta)),
assert (visitada_regla (1)),
procesar.

procesar:-
no_venenoso (azul),
no (visitada_regla (1)),
assert (venenoso (violeta)),
assert (visitada_regla (1)),
procesar.

% Regla 2

procesar:-
venenoso (rojo),
no (visitada_regla (2)),
assert (no_venenoso (amarillo)),
assert (visitada_regla (5)),
procesar.

procesar:-
no_venenoso (rojo),
no (visitada_regla (2)),
assert (venenoso (amarillo)),
assert (visitada_regla (2)),
procesar.

procesar:-
venenoso (amarillo),
no (visitada_regla (2)),
assert (no_venenoso (rojo)),
assert (visitada_regla (2)),
procesar.

procesar:-
no_venenoso (amarillo),
no (visitada_regla (2)),
assert (no_venenoso (rojo)),
assert (visitada_regla (2)),
procesar.


% Regla 3

procesar:-
venenoso (azul),
no (visitada_regla (3)),
assert (no_venenoso (anaranjado)),
assert (visitada_regla (3)),
procesar.

procesar:-
no_venenoso (azul),
no (visitada_regla (3)),
assert (venenoso (anaranjado)),
assert (visitada_regla (3)),
procesar.

procesar:-
venenoso (anaranjado),
no (visitada_regla (3)),
assert (no_venenoso (azul)),
assert (visitada_regla (3)),
procesar.

procesar:-
no_venenoso (anaranjado),
no (visitada_regla (3)),
assert (venenoso (azul)),
assert (visitada_regla (3)),
procesar.


% 3-. Uno del par no tiene veneno
% d) El violeta y el amarillo
% e) El rojo y el anaranjado
% f) El verde y el azul

%regla 4
procesar:-
venenoso (violeta),
no (visitada_regla (4)),
assert (no_venenoso (amarillo)),
assert (visitada_regla (4)),
procesar.


procesar:-
venenoso (amarillo),
no (visitada_regla (5)),
assert (no_venenoso (violeta)),
assert (visitada_regla (5)),
procesar.

%regla 5

procesar:-
venenoso (rojo),
no (visitada_regla (6)),
assert (no_venenoso (anaranjado)),
assert (visitada_regla (6)),
procesar.


procesar:-
venenoso (anaranjado),
no (visitada_regla (5)),
assert (no_venenoso (rojo)),
assert (visitada_regla (5)),
procesar.

%regla 6

procesar:-
venenoso (verde),
no (visitada_regla (6)),
assert (no_venenoso (azul)),
assert (visitada_regla (6)),
procesar.

procesar:-
venenoso (azul),
no (visitada_regla (6)),
assert (no_venenoso (verde)),
assert (visitada_regla (6)),
procesar.

procesar:-
write (‘fin del proceso’).