Re: Max of list with constrained variables

Daniel Diaz <[email protected]>
Newsgroups gmane.comp.gnu.prolog.general
Message-ID <[email protected]>
Hello,

max_list only work with integers.

Here you have to use FD constraints (like #= and the functor max/2).

lmax([X|L], M) :-
     lmax1(L, X, M).


lmax1([], X, X).

lmax1([Y|L], X, M) :-
     M1 #= max(X, Y),
     lmax1(L, M1, M).


Daniel

Le 24/05/2013 16:23, Georgios Samaras a écrit :
> I have a list, which, for N = 5 (for instance), it is like this:
> [3*(1-_#0(0..1)),2*(1-_#18(0..1)),1*(1-_#36(0..1)),4*(1-_#54(0..1)),2*(1-_#72(0..1))].
>
> I am working on a finite domain constraint environment and I tried this
> max_list(MaxFilter, M0),
>
> and I got this error (since the variable does not have a value at this
> moment)
> uncaught exception: error(type_error(evaluable,_#4195373(0..1)),(=<)/2)
>
> In Eclipse, I would use eval and in SWI, I used this predicate
> lmax([H|T], X):-
> 	foldl(max_, T, H, Exp),
> 	X #= Exp.
> max_(E, X, max(E, X)).
>
> but I did not find any equiivalent of foldl in GNU.
>
> What should I do? Any ideas? I am stuck and I have been searching the
> whole internet for days...
>
> //G. Samaras
>
>
> _______________________________________________
> Users-prolog mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/users-prolog
>


-- 
Ce message a ete verifie par MailScanner
pour des virus ou des polluriels et rien de
suspect n'a ete trouve.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.