
/* simple script - introduction */

male(peter).
male(paul).
female(beatrice).
female(alice).
female(clepatra).

diffSex(X,Y) :- male(X),female(Y).

possibleCouple(X,Y) :-diffSex(X,Y), likes(X,Y), likes(Y,X).

likes(peter,alice).
likes(alice,peter).
likes(paul,alice).
likes(paul,beatrice).
likes(paul,clepatra).


/* myAppend - unification and direction */

myAppend([],L,L).
myAppend([X|L1],L2,[X|L3]) :- myAppend(L1,L2,L3).


/* Factorial - arithmetic */

factorial(0,1).
factorial(N,F) :-
   N>0,
   N1 is N-1,
   factorial(N1,F1),
   F is N*F1.


/* Towers of Hanoi - output */

hanoi(N) :- move(N,left,center,right).

move(0,_,_,_).
move(N,A,B,C) :-   % from A to B via C
   N >= 1,
   M is N-1,
   move(M,A,C,B),
   inform(A,B),
   move(M,C,B,A).

inform(X,Y) :- write(X), write(' -> '), write(Y), nl.
