【发布时间】:2021-06-09 19:54:10
【问题描述】:
我正在尝试使用 prolog 解决项目欧拉问题 9。我是 prolog 的 100% n00b,我现在只是想了解基础知识。
我正在尝试使用 findall 来获取所有加起来为 1000 的三元组,但我无法真正弄清楚语法。
我希望是这样的:
pythag_trip(A, B, C, D) :- D is (A * A) + (B * B) + (C * C).
one_thou_pythag(A, B, C) :- pythag_trip(A, B, C, 1000).
product_trip(A, B, C, D) :- D is A * B * C.
findall([A, B, C], one_thou_pythag(A, B, C) , Bag)).
writeln(Bag).
我知道这不起作用,因为它说 Bag 没有实例化。但是对于这门语言,我仍然有一些基本的不懂。
1:我什至可以这样做吗?一次有多个移动部件?我能找到所有满足条件的三元组吗?我需要像使用 clpfd 那样完全不同吗?
2:我放置 Bag 的最后一个参数应该是什么?
3:是否可以创建数据类型?我在想,如果我必须找到某种方法来自己生成所有可能性,那么创建一个三元组类型和一个运算来获得它们的毕达哥拉斯三元组总和可能会很好
基本上这些问题,然后,如果有人有提示,我可以使用一些指向正确的方向
【问题讨论】:
标签: prolog clpfd pythagorean