1

ユーザーが別の値を要求するたびにリストの最初の要素を返したい、つまりList = [1, 2, 3]、プログラムが実行されると返されますが1;が押されると (ユーザーが別の値を要求する) 2、リストまで返されます。空です。

すべての値を一度に一覧表示することはできましたが、ここでの重要な問題は、ユーザーが別の値を必要とするかどうかをユーザーが決定できるようにするにはどうすればよいかということです。

4

2 に答える 2

2

これを行うだけです:

member( X, List ).

Listこれにより、 on eachの次のメンバーが列挙されます;。述語を呼び出すたびに、すべてのメンバーが使い果たされるまで、 Listinの次のメンバーがインスタンス化されます。X

于 2013-07-13T16:05:26.187 に答える
1

はい、それを行う組み込み関数がありますが、Prolog をよりよく理解するには、自分で記述してみる必要があると思います。

each_one([A|_],A).

リストの要素の 1 つはそのヘッド要素です。

each_one([_|B],X):- each_one(B,X).

より多くの要素がリストの末尾にあります。これが再帰句です。

each_one([],_):- fail.空のリストには要素がないので、何も書きません (同じ効果で書き込めますが)。

今すぐ試すことができます:

4 ?- each_one([1,2,3],X).
X = 1

Prolog は最初のソリューションを表示し、応答を待ちます。「;」を押します 続ける:

      ;
X = 2 ;
X = 3 ;
false.
于 2013-07-15T14:14:37.927 に答える