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 28 29 30 31 32 33 34 35 36 37 38 39
| minsouliste([], []).
minsouliste([H|T], MH1) :-
is_list(H), !,
minsouliste(H, MH),
minsouliste(T, MT),
( is_list(MT) -> MH1 = [MH|MT]; MH1 = [MH |[MT]]).
minsouliste([H|T], MH) :-
minsouliste1(T, H, MH).
minsouliste1([H | T], MHC, [MHC | [ MH1 | MH2]]) :-
is_list(H), !,
minsouliste(H, MH1),
minsouliste(T, MH2).
minsouliste1([H | T], MHC, MH) :-
H < MHC, !,
minsouliste1(T, H, MH).
minsouliste1([_H | T], MHC, MH) :-
minsouliste1(T, MHC, MH).
minsouliste1([], MH, MH).
% la batteire de tests :
test :-
minsouliste([[1,[2,5]]],R),
writeln(R),
writeln([[1,2]]),
minsouliste([2, [0, 1], [8, 2], 4], R1),
writeln(R1),
writeln([2,0,2,4]),
minsouliste([[[2,3,5],[3,0,2]],[2,3,9]],R3),
writeln(R3),
writeln([[2,0],2]). |
Partager