Prolog算术语法
如何将a
定义为整数/浮点数?
我想找到 a+b+c+d=10
的结果,其中 a,b,c,d
是整数且 >=0
代码>.
How to define a
as a integer/float number ?
I want to find the results of a+b+c+d=10
where a,b,c,d
is integer and >=0
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是一个简单、现代、纯 Prolog、非 CLP 库的解决方案:
Here is a simple, modern, pure Prolog, non-CLP-library solution:
通过 SWI-Prolog,您可以使用 CLP(FD) 库
with SWI-Prolog you can use CLP(FD) library
这是 GNU-Prolog 一段在有限域上进行约束求解的代码:
Ctrl + D
如您所见,它解决了大范围的问题,例如
0-9999999感谢 Przemysław Kobylański 的博客,其中提供了清晰、非常好的 Prolog 示例,我在其中找到了鼓舞人心的示例。
PPS 在处理有限域时,您可能喜欢使用 fd_set_vector_max/ 1..在上面的情况下,它是不需要的,但取决于约束可能是有用的 - 当 Gnu-Prolog 在范围上操作时,当在可能值的向量上操作时,更多细节, 可以在手册“有限域求解器和内置谓词 - 简介”中找到
Here is GNU-Prolog piece of code with constraint solving over finite domains :
Ctrl + D
As you can see, it solves problem of big ranges like 0-9999999
P.S. Thanks for Przemysław Kobylański for his blog with clear, very nice Prolog examples, where I've found inspiring examples.
P.P.S. When playing with finite domains, you might like to use fd_set_vector_max/1 . In above case it's not needed, but depending on constraint might be usefull - more details when Gnu-Prolog operates on ranges, when on vectors of possible values, can be found at manual "Finite domain solver and built-in predicates - Introduction"