我希望定義一個謂詞powerset(X,P),當P是X的powerset時,它是真實的。無論P是否磨光都應該工作。Prolog powerset謂詞
回答
由於您使用SICStus Prolog,因此您可以使用庫(列表)中的subseq0(+ Sequence,?SubSequence),其中「當SubSequence是序列的子序列時爲真,但可能是序列本身」(引用手冊http://www.sics.se/sicstus/docs/4.0.2/html/sicstus/lib_002dlists.html)。
?- setof(X, subseq0([a,b,c],X), Xs).
Xs = [[],[a],[a,b],[a,b,c],[a,c],[b],[b,c],[c]]
如果您不允許使用庫謂詞可以實現subseteq0爲gnu Prolog powerset modification,我在這裏引用爲完整起見(與感謝gusbro)
powerset([], []).
powerset([H|T], P) :- powerset(T,P).
powerset([H|T], [H|P]) :- powerset(T,P).
我剛剛注意到[這個奇怪的術語問題](http://en.wikipedia.org/wiki /Subsequence#Substring_vs._subsequence):一個序列和一個字符串通常被同義使用,但是一個子序列和一個子字符串是不完全相同的...... – false 2012-04-26 21:39:44
不知何故,我習慣了這種命名約定,但事實上它不是很一致。 – 2012-04-27 08:49:06
- 1. SWI-Prolog謂詞
- 2. Prolog謂詞
- 3. 謂詞返回。 Prolog
- 4. PROLOG謂詞順序
- 5. prolog中的謂詞
- 6. 使用Prolog = ..謂詞
- 7. 從python調用prolog謂詞
- 8. prolog謂詞[sublist(Xs,Ys)]
- 9. Prolog謂詞(\ =)/ 2被忽略
- 10. Prolog - 謂詞運算符
- 11. Prolog,使用多個謂詞
- 12. 擴展Prolog的謂詞
- 13. 查找Prolog的謂詞
- 14. Prolog中的成員謂詞
- 15. Prolog謂詞不起作用
- 16. Prolog中的謂詞控制
- 17. Prolog的謂詞主叫
- 18. 在Prolog中結合謂詞
- 19. 在prolog中加入謂詞
- 20. Prolog的結合謂詞
- 21. Prolog的謂詞問題
- 22. 默認Prolog謂詞排序
- 23. Prolog謂詞 - 無限循環
- 24. 滿足一元Prolog謂詞
- 25. 使用Prolog選擇謂詞?
- 26. 的Prolog - 一個AUX謂詞在主謂詞
- 27. Prolog測試謂詞是否失敗
- 28. SWI Prolog忽略不連續謂詞
- 29. 簡單的Prolog謂詞在JavaScript
- 30. 在swi prolog中使用減法謂詞
說明來意你到目前爲止嘗試過嗎?你正在研究哪個序言?這是功課嗎? – 2012-04-26 17:48:27
STICStus。這是一個練習題,我無法解決問題。 – user1283759 2012-04-26 17:49:41
到目前爲止你有什麼代碼? – 2012-04-26 17:51:27