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程序读取多行输入文件?