晚上好, 我有一个简单的问题,并且我警告你,我对prolog很新。 假设有三个相同大小的列表,每个只包含1s,0s或-1s。 我想验证的是,对于所有我,这三个列表中的第i个元素,只有一个非零。序言:迭代
该代码会为一个固定的我:
:- use_module(library(clpfd)).
compat1(V1,V2,V3,I) :-
length(V1,G),
nth1(I,V1,X),
nth1(I,V2,Y),
nth1(I,V3,Z),
W is X*X+Y*Y+Z*Z,
W is 1,
I in 1..G.
我怎么能说 “我为人人,compat1(V1,V2,V3,I)”? 我试图定义
compat2(V1,V2,V3,1) :- compat1(V1,V2,V3,1).
compat2(V1,V2,V3,K) :- compat2(V1,V2,V3,J), compat1(V1,V2,V3,K), K is J+1.
,这样我可以以K称它为我感兴趣的 但compat2不起作用=最大值:让真实的,那么,后“;”无限期地运行。
谢谢!
优雅和简单。非常有用,谢谢你告诉我不要使用是/ 2。 – Martino
另一个问题。我如何总结一个涉及索引的列表?例如,我怎么能总结我的表达我* A(我)? – Martino