我想生成具有给定属性的给定列表的所有子列表,它们具有作为参数提及的一定长度,并且它们具有作为包含元素的给定元素,该给定元素作为参数传递。我已经设法做到了这一点,但在两个谓词的帮助下,就最优性而言,速度非常慢:
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).
在这里,我想通过谓词的T
参数返回 L 列表中维度为 2 或 1 且包含元素的所有子列表。谓词和分别与预定义谓词具有相同的用法。您能否告诉我如何将这两个条件合并到谓词中,以便程序仅构建那些特定的子列表?choose
f
dimension
member
length
member
sublist