こんばんは、私は単純な問題を抱えています、そして私はプロローグで非常に新しいことをあなたに警告します。同じサイズの3つのリストがあり、それぞれに1、0、または-1のみが含まれているとします。3つのリストのi番目の要素のすべてのiについて、1つだけが非ゼロであることを確認したいと思います。
このコードは、固定された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.
「すべてのIについて、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=maximum valueで呼び出すことができるようにします。しかし、compat2は機能しません。「;」の後にtrueを返します。無期限に実行されます。
ありがとう!