/* tak benchmark in Picat v3. bench/tak.pl https://github.com/SWI-Prolog/bench Changes: - added output in tak/0. This Picat model was created by Hakan Kjellerstrand, hakank@gmail.com See also my Picat page: http://www.hakank.org/picat/ */ main => go. go ?=> tak(18,12,6,X), println(X), nl. go => true. % """ % generated: 17 November 1989 % option(s): SOURCE_TRANSFORM_1 % % tak % % Evan Tick (from Lisp version by R. P. Gabriel) % % (almost) Takeuchi function (recursive arithmetic) % """ top:-tak. tak :- tak(18,12,6,_). tak(X,Y,Z,A) :- X =< Y, Z = A. tak(X,Y,Z,A) :- X > Y, 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).