Files
mercury/tests/benchmarks/tak.nl
Fergus Henderson aaafa54da5 Define main/2.
*.nl:
	Define main/2.
1995-03-06 05:22:25 +00:00

43 lines
699 B
Plaintext

:- module tak.
:- interface.
:- import_module int, char, list, graph, require, std_util, io.
:- pred main1(int).
:- mode main1(out) is det.
:- pred main3(int, io__state, io__state).
:- mode main3(out, di, uo) is det.
:- pred main(io__state, io__state).
:- mode main(di, uo) is det.
:- implementation.
main --> main3(_).
main1(Out) :-
tak(18, 12, 6, Out).
main3(Out) -->
{ tak(18, 12, 6, Out) },
io__write_int(Out),
io__write_string("\n").
:- pred tak(int, int, int, int).
:- mode tak(in, in, in, out) is det.
tak(X, Y, Z, A) :-
(X =< Y ->
Z = A
;
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)
).