% to read this file with standard Prolog, uncomment the next two lines: :- op(1150,fx,function). function(_). :- function tak/4. tak(X,Y,Z,A) :- X =< Y -> A=Z ; ((X1 is X - 1), tak(X1,Y,Z,A1), (Y1 is Y - 1), tak(Y1,Z,X,A2), (Z1 is Z - 1), tak(Z1,X,Y,A3), tak(A1,A2,A3,A)). goal0(R) :- tak(24,16,8,R). goal1(R) :- tak(27,16,8,R). goal2(R) :- tak(33,17,8,R). main(R) :- goal1(R).