Q
獲取序言給算術
3
A
回答
2
生成和測試方法也適用。當然,你還需要一些約束,例如:
?- between(1, 6, X), % X is an integer between 1 and 6
between(1, 6, Y), % Y is an integer between 1 and 6
X =< Y, % X is not larger than Y
X + Y =:= 6. % the sum is 6
X = 1, Y = 5 ;
X = 2, Y = 4 ;
X = Y, Y = 3 ;
false.
子查詢的順序是顯著,所以你可能還不如說是生成,然後檢驗。如果你不怕硬編碼的一些限制的,可能有辦法,以避免產生一些值,並進行一些測試是不必要的,例如:
?- between(1, 6, X), % X is an integer between 1 and 6
between(X, 6, Y), % Y is an integer between X and 6
X + Y =:= 6. % the sum is 6
X = 1, Y = 5 ;
X = 2, Y = 4 ;
X = Y, Y = 3 ;
false.
你應該認識到下降例如,這條道路與實施像CLP(FD)這樣的約束求解器大致相同。
3
我建議使用,如果您的Prolog支持它,一個有限域解算器。
我通常使用GProlog,我能得到你喜歡的東西
fd_domain([A, B], 1, 100),
6 #= A + B,
fd_labeling([A, B]),
其中fd_domain/3
設置變量域A
和B
(從1
至100
),6 #= A + B
設置約束問什麼(A + B
是6 )和fd_labelling/1
得到所有可能的計算。
在Swi-Prolog中有些不同。
首先,你有
:- use_module(library(clpfd)).
要設置變量和域加載CLP(FD)庫,你可以寫
Vars = [A, B],
Vars ins 1..100,
設置約束等於
6 #= A + B,
並且得到所有可能的組合,你可以寫
label(Vars),
相關問題
- 1. 兩個列表的算術序言
- 2. 序言 - 算術平均值和合並
- 3. 學習「序言藝術」
- 4. 8085算術程序
- 5. NLP:語言分析技術和算法
- 6. 如何在序言中進行算術表達式評估?
- 7. 通過http獲取請求進行算術運算
- 8. AS400 CL腳本算術給出0
- 9. NHibernate QueryOver按算術運算排序
- 10. 算術運算
- 11. 算術運算
- 12. 算術運算
- 13. 算術運算
- 14. 算術運算
- 15. 算術計算
- 16. 序言:寫作RPG統計打印程序時的算術問題
- 17. 從MediaStore獲取藝術家藝術
- 18. 漂亮 - 打印序言術語
- 19. 算術溢出與算術運
- 20. 獲取通過了在序言
- 21. 爲非Unicode程序獲取語言
- 22. 序言:獲取值從0到K - 1
- 23. CSH算術運算
- 24. 算術運算給出不正確的結果
- 25. 給char類型賦一個數字做算術運算?
- 26. 語言翻譯技術術語詞典
- 27. 序言 - 遞歸計算
- 28. 在JSTL EL中獲取當前日期並對其進行算術運算
- 29. 在序言中將sin函數的答案分配給術語sin(X)
- 30. 如何爲算術yacc程序讀取多行輸入文件?