Je veux générer toutes les sous-listes d'une liste donnée avec la propriété donnée qu'elles ont une certaine longueur mentionnée comme argument et elles ont aussi comme élément de contenu un élément donné qui est passé en paramètre. J'ai réussi à le faire, mais avec l'aide de deux prédicats, et en termes de optimalité est très lent:Prolog Question - Comment générer des sous-listes d'une longueur donnée
sublist([], []).
sublist([A|T], [A|L]):-
sublist(T, L).
sublist(T, [_|L]):-
sublist(T, L).
choose(T, L):-
sublist(T, L),
(dimension(2, T); dimension(1, T)),
belongs(f, T).
ici, je voudrais revenir par le paramètre T
du prédicat choose
tous les sous-listes de la L liste qui ont la dimension 2 ou 1 et qui contient l'élément f
. Les prédicats dimension
et member
ont la même utilisation que les prédicats prédéfinis length
, respectivement member
.
Pouvez-vous me dire comment incorporer ces deux conditions dans le prédicat sublist
afin que le programme ne construise que ces sous-listes particulières?