0

我在将以下三个规则连接在一起时遇到问题。

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).

countcombo 创建一个附加列表。membersofcombo,对该列表进行排序,然后生成原始附加列表的每个成员,计数规则然后计算每个成员的出现次数。

membersofcombo 和 count 一起工作,但我无法让 countcombo 连接到组合成员。

4

1 回答 1

2

您的代码存在许多问题:

  • 你知道这不是combination一个变量(代表一些列表)吗?

    规则1( [],组合):-
       打印(组合),
       规则2(组合,X,C)
     

  • 选择更好的谓词名称:rule1, rule2rule3不要告诉我什么...

  • 在!的实现中使用count/3

  • 消除X子句中的单例变量count([], X, 0).
    很可能,您打算写count([], _, 0).

  • 提供一个实现count/3。是rule3/3吗?

于 2016-01-15T12:54:23.520 回答