5 ms·
Prolog also has constraints! You need to import a library called CLP(FD) / CLP(Z) (depending on the Prolog system) and instead of =, <, =<, etc. you need to use
by ngruhn 2y ago
Prolog also has constraints! You need to import a library called CLP(FD) / CLP(Z) (depending on the Prolog system) and instead of =, <, =<, etc. you need to use #=, #<, #=<, etc.
:- use_module(library(clpfd)).
min(Min, Y, Min) :- Min #=< Y, !.
min(X, Min, Min) :- Min #=< X.
find_min_and_subtract_([], [], Min, Min).
find_min_and_subtract_([H|T], [R|Rs], TempMin, Min) :-
min(TempMin, H, NewTempMin),
R #= H - Min,
find_min_and_subtract_(T, Rs, NewTempMin, Min).
find_min_and_subtract([H|Hs], Rs, Min) :-
find_min_and_subtract_([H|Hs], Rs, H, Min).
With that (and an additional variable for the temporary minimum) it works for me:
?- find_min_and_subtract([9,2,4,12], Rs, Min).
Min = 2,
Rs = [7, 0, 2, 10]
https://swish.swi-prolog.org/p/qgchfMfB.pl https://swish.swi-prolog.org/p/qgchfMfB.pl
- anonzzzies 2y agoOW! Thanks, I did not know about that. Last I user Prolog was mid 90s, but I really liked it, just did not have any practical use for it after graduation. Thanks for that!