我在将以下三条规则连接在一起时遇到了问题。
countingCombo([H|T], Sequence2) :-
fact1(H, Sequence),
append(Sequence, Sequence2, Sequence3),
countingCombo(T, Sequence3).
countingCombo([], Combination) :-
print(Combination),
membersofCombo(Combination, X, C).
membersofCombo(List, X, C) :-
sort(List, List1),
member(X, List1),
count(List, X, C).
count([], X, 0).
count([X|T], X, Y) :-
count(T, X, Z),
Y is 1+Z.
count([X1|T], X, Z) :-
X1 \= X,
count(T, X, Z).
countingcombo创建一个附加列表。 membersofcombo,对列表进行排序,然后生成原始附加列表的每个成员,计数规则然后计算每个成员的出现次数。
membersofcombo和count一起工作,但我无法让countcombo连接到组合成员。
答案 0 :(得分:2)
您的代码存在许多问题:
您是否知道 combination
不是变量(代表某些列表)?
rule1([], combination) :- print(combination), rule2(combination, X, C).
选择更好的谓词名称: rule1
,rule2
和rule3
不要告诉我任何事情......
在count/3
的实施中使用prolog-dif!
消除条款X
中的单例变量count([], X, 0).
很可能,您打算写count([], _, 0).
提供 count/3
的实施。是rule3/3
吗?