PROGRAMAS NICE TUTORIAL
joke.
laugh :- joke.
laugh :- joke.
joke.
hear_joke :- joke, not deaf.
understand_joke :- hear_joke, not stupid.
laugh :- understand_joke.
laugh :- stupid, not joke.
corrida

PROGRAMA 4 NICE TUTORIAL
parent(john, james).
parent(james, bill).
grandparent(john, bill) :- parent(john, james), parent(james, bill).
parent(john, james).
parent(james, bill).
grandparent(X, Y) :- parent(X, Z), parent(Z, Y).
parent(william, john).
parent(john, james).
parent(james, bill).
parent(sue, bill).
parent(james, carol).
parent(sue, carol).
male(john).
male(james).
female(sue).
male(bill).
female(carol).
grandparent(X, Y) :- parent(X, Z), parent(Z, Y).
father(X, Y) :- parent(X, Y), male(X).
mother(X, Y) :- parent(X, Y), female(X).
brother(X, Y) :- parent(P, X), parent(P, Y), male(X), X != Y.
sister(X, Y) :- parent(P, X), parent(P, Y), female(X), X != Y.
person(X) :- parent(X, _).
person(X) :- parent(_, X).
corrida

PROGRAMA 5 NICE TUTORIAL
emp("Jones", 30000, 35, "Accounting").
emp("Miller", 38000, 29, "Marketing").
emp("Koch", 2000000, 24, "IT").
emp("Nguyen", 35000, 42, "Marketing").
emp("Gruber", 32000, 39, "IT").
dept("IT", "Atlanta").
dept("Marketing", "New York").
dept("Accounting", "Los Angeles").
q1(Ename, Esalary, Dlocation) :- emp(Ename, Esalary, _, D), dept(D, Dlocation),
Esalary > 31000.
corrida

PROGRAMA 6 NICE TUTORIAL
cross :- not train_approaching.
cross :- -train_approaching.
cross :- not train_approaching.
-train_approaching.
cross.
-cross.
corrida

PROGRAMA 7 NICE TUTORIAL
left_arm_broken :- not right_arm_broken.
right_arm_broken :- not left_arm_broken.
can_write :- left_arm_broken.
be_angry :- can_write.
:- male(X), female(X).
corrida

PROGRAMA 8 NICE TUTORIAL
node(minnesota).
node(wisconsin).
node(illinois).
node(iowa).
node(indiana).
node(michigan).
node(ohio).
arc(minnesota, wisconsin).
arc(illinois, iowa).
arc(illinois, michigan).
arc(illinois, wisconsin).
arc(illinois, indiana).
arc(indiana, ohio).
arc(michigan, indiana).
arc(michigan, ohio).
arc(michigan, wisconsin).
arc(minnesota, iowa).
arc(wisconsin, iowa).
arc(minnesota, michigan).
% guess coloring
col(Country, red) v col(Country, green) v col(Country, blue) :- node(Country).
% check coloring
:- arc(Country1, Country2),
col(Country1, CommonColor), col(Country2, CommonColor).
corrida

PROGRAMA 9 NICE TUTORIAL
% guess horizontal position for each row
q(X,1) v q(X,2) v q(X,3) v q(X,4) v q(X,5) v q(X,6) v q(X, 7) v q(X,8) :- #int(X), X > 0.
% check
% assert that each column may only contain (at most) one queen
:- q(X1,Y), q(X2,Y), X1 <> X2.
% assert that no two queens are in a diagonal from top left to bottom right
:- q(X1,Y1), q(X2,Y2), X2=X1+N, Y2=Y1+N, N > 0.
% assert that no two queens are in a diagonal from top right to bottom left
:- q(X1,Y1), q(X2,Y2), X2=X1+N, Y1=Y2+N, N > 0.
corrida

PROGRAMA 10 NICE TUTORIAL
true.
fibonacci(1, 1) :- true.
fibonacci(1, 2) :- true.
fibonacci(F, Index) :- +(F1, F2, F),
fibonacci(F1, Index1),
fibonacci(F2, Index2),
#succ(Index1, Index2),
#succ(Index2, Index).
corrida
