3

私はプロローグが初めてで、次をカウントする述語を作成しようとしています: 述語名は、与えられたときに s2int です:

  • s2int(0,Y) Y=0 を「返す」必要があります。
  • s2int(s(0),Y) => Y=1.
  • s2int(s(s(0)),Y) => Y=2.
  • s2int(S(s(s(0))),Y) => Y=3.

などなど..ここに私が書こうとしたものがあります(非常に貧弱です)。最初に私はこのコードを試しました:

s2intAux(0,Y).
s2intAux(X,Y):- X = s(Z) ,Y1 is Y+1, s2intAux(Z,Y1).

しかし、s2intAux(s(0),Y) と入力して実行しようとすると、「エラー: is/2: 引数が十分にインスタンス化されていません」というエラーが表示されます。Y は定義されていないため、エラーが発生します。それから私はこれを試しました:

s2intAux(0,Y).
s2intAux(X,Y):- X = s(Z) ,Y1 is Y+1, s2intAux(Z,Y1).

s2int(X,Y):- Y1 is 0, s2intA(X,Y1).

(値ゼロで Y を開始しようとしましたが、これはまったく機能しませんでした) 数時間立ち往生しているので、皆さんに頼っています。助けてください! ありがとうございました。

4

1 に答える 1