1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| :- use_module(library(lambda)).
:- use_module(library(clpfd)).
rgb(L) :-
% L = [1, 5, 6, 3, 7, 1, 2, 8, 3].
numlist(1,32, L).
rgb(L, A) :-
length(L, N),
sumlist(L, TT),
( TT mod 3 =:= 0
-> Max is TT//3,
A = [A1,A2,A3],
maplist(\X^(length(X, N), X ins 0..1), A),
maplist(\X^Y^Z^(X+Y+Z #= 1), A1,A2,A3),
maplist(L +\X^Y^foldl(\T^U^V^W^(W #= V + T * U), L, X, 0, Y), A, R),
maplist(\X^(X #= Max), R),
flatten(A, FA),
label(FA)
; writeln('Impossible'),
A = [[],[],[]]).
t :-
rgb(L),
writeln(L), nl,
rgb(L, A),
maplist(writeln, A). |
Partager