そのような定義が可能であれば、クリンゴで「関数」を作成することについて、私は機知に富んでいます。私が達成しようとしていることの単純化されたバージョンで、私はこの非常に短いプログラムを書きました:
a(1..3).
adj(X,Y) :- a(X), a(Y), abs(X-Y)==1.
#hide a/1.
true
基本的に、差の絶対値が 1 に等しい場合に任意の 2 つの数値が保持される隣接関数を定義したいと考えています。上記のプログラムに期待することは、結果を出力することですが、次のadj(1,2) adj(2,1) adj(2,3) adj(3,2)
出力が表示されます。
Answer: 1
SATISFIABLE
Models : 1
Time : 0.000
Prepare : 0.000
Prepro. : 0.000
Solving : 0.000
(省略#hide a/1.
した場合、答えが出力されます:) a(1) a(2) a(3)
。
これはクリンゴ101のような気がするので、ここで基本を誤解しているのかもしれません。私はオンラインで出くわした例を研究してクリンゴを学ぼうとしていますが、明日の課題があるので急いでいます. 誰かが光を当てることができれば、それは素晴らしいことです. ありがとう。