domains
nacionalidad=symbol
color=symbol
bebida=symbol
tabaco=symbol
mascota=symbol
orden=integer
lista=persona(nacionalidad,color,bebida,tabaco,mascota,orden)
sol=lista*
predicates
nondeterm pistas.
nondeterm member(lista,sol).
nondeterm puedeSer1(integer).
nondeterm puedeSer2(orden,orden).
clauses
pistas:-Solu=[persona(A1,B1,C1,D1,E1,F1),
persona(A2,B2,C2,D2,E2,F2),
persona(A3,B3,C3,D3,E3,F3),
persona(A4,B4,C4,D4,E4,F4),
persona(A5,B5,C5,D5,E5,F5)],
member(persona(ingles,roja,_,_,_,_),Solu),
member(persona(sueco,_,_,_,perro,_),Solu),
member(persona(danes,_,te,_,_,_),Solu),
puedeSer1(X1),
member(persona(_,blanca,_,_,_,X1),Solu),
Y1=X1-1,
member(persona(_,verde,_,_,_,Y1),Solu),
member(persona(_,verde,cafe,_,_,_),Solu),
member(persona(_,_,_,winston,caracoles,_),Solu),
member(persona(_,_,leche,_,_,3),Solu),
member(persona(_,amarilla,_,marlboro,_,_),Solu),
member(persona(noruego,_,_,_,_,1),Solu),
puedeSer1(Z1),
member(persona(_,_,_,_,gato,Z1),Solu),
puedeSer2(Z1,W1),
member(persona(_,_,_,fortuna,_,W1),Solu),
puedeSer1(T1),
member(persona(_,_,_,_,caballo,T1),Solu),
puedeSer2(T1,R1),
member(persona(_,_,_,marlboro,_,R1),Solu),
member(persona(_,_,cerveza,camel,_,_),Solu),
member(persona(japones,_,_,ducados,_,_),Solu),
puedeSer1(L1),
member(persona(_,azul,_,_,_,L1),Solu),
puedeSer2(L1,H1),
member(persona(noruego,_,_,_,_,H1),Solu),
member(persona(_,_,agua,_,_,_),Solu),
member(persona(_,_,_,_,cebra,_),Solu),
member(persona(_,_,_,_,_,1),Solu),
member(persona(_,_,_,_,_,2),Solu),
member(persona(_,_,_,_,_,4),Solu),
member(persona(_,_,_,_,_,5),Solu),
nl,write(A1," ",B1," ",C1," ",D1," ",E1," ",F1),
nl,write(A2," ",B2," ",C2," ",D2," ",E2," ",F2),
nl,write(A3," ",B3," ",C3," ",D3," ",E3," ",F3),
nl,write(A4," ",B4," ",C4," ",D4," ",E4," ",F4),
nl,write(A5," ",B5," ",C5," ",D5," ",E5," ",F5),
nl.
member(X,[X,_,_,_,_]).
member(X,[_,X,_,_,_]).
member(X,[_,_,X,_,_]).
member(X,[_,_,_,X,_]).
member(X,[_,_,_,_,X]).
puedeSer1(X1):-X1=1;X1=2;X1=3;X1=4;X1=5.
puedeSer2(Z1,W1):-W1=Z1+1;W1=Z1-1.
goal
pistas.