1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| personnages([[napoleon,reel,politicien,homme,europeen,mort],[trump,homme,reel,politicien,blond,americain,vivant],
[zidane,homme,reel,footballer,europeen,vivant],[tupac,homme,reel,rappeur,americain,mort],[hercules,homme,hero,aventurier,jeune,mort],
[sirene,fictif,femme,mort]]).
% on n'a pas besoin de connaitre l'intersection
% uniquement sa longueur
% on garde aussi le nom du personnage
test(In, [Head|Tail], [N, Head]) :-
intersection(In, Tail, Rest),
length(Rest, N).
ma_selection(In, Out) :-
personnages(Lst),
maplist(test(In), Lst, Ret),
% on trie les résultats selon la longueur de la réponse
sort(Ret, Ret1),
% on ne garde que l'élément important de la réponse
last(Ret1, [_, Out]). |
Partager