1
正如標題所示,我想編寫一個程序來完成此操作。將Prolog目標作爲第一個參數位置的輸入,並返回此目標在第二個參數位置成功的次數
一個例子是:
?- count(member(X,[1,2,3]), N).
N = 3
Yes
但不僅爲會員構建,同時也爲像一些運營商:
?- count(17 =:= 12 + 5, N).
N = 1
Yes
有人可以幫助我開始了嗎?
正如標題所示,我想編寫一個程序來完成此操作。將Prolog目標作爲第一個參數位置的輸入,並返回此目標在第二個參數位置成功的次數
一個例子是:
?- count(member(X,[1,2,3]), N).
N = 3
Yes
但不僅爲會員構建,同時也爲像一些運營商:
?- count(17 =:= 12 + 5, N).
N = 1
Yes
有人可以幫助我開始了嗎?
試試這個:
?- findall(., Goal, Ls), length(Ls, L).
例子:
?- findall(., member(X,[1,2,3]), Ls), length(Ls, L). L = 3, ... .
庫(aggregate)已經實施了您的問題提供解決方案,以及更多...
?- aggregate(count, X^member(X,[1,2,3]), N).
N = 3.
?- aggregate(count, 17 =:= 12 + 5, N).
N = 1.
噢,我很笨! –
我再次建議你在編程時使用Prolog來考慮*關係*。這個問題可能與你之前的反問題有關,我建議你通過更徹底的思考。 – mat