0

リストに要素を追加して、自分のリストに置き換えたい。

だから私は書いた

initialstate(0,[],[[1,0],[2,3],[1,2],[1,3]]).
add(X,L2,[X|L2]).

そんなものを作ってみたい…。

?- initialstate(_,List,_),add(4,List,List)

初期状態をこれに置き換えます

initial_state(0,[4],[[1,0],[2,3],[1,2],[1,3]]).

私にとっての主な質問は、識別子「initialstate」内のリストを置き換える方法です。

私はプロローグが初めてです...助けてください...そしてそれが何かばかげていたらごめんなさい。

4

2 に答える 2

1

一度適切な宣言を提供した

:- dynamic initialstate/3.

この方法でDBを更新できます

?- retract(initialstate(A,B,C)), assertz(initialstate(A,[4|B],C)).
于 2013-10-09T22:09:19.557 に答える
0

リストを変更したい場合は、別のリストを取得します。そのため、別の名前が必要です。

Prolog は命令型言語ではなく、より記述的な言語です。これは次のことを意味します。これとこれを行うとは言いません。あなたはこれがそのようなものだと言い、これが事実である場合、これはファイルで真/偽です(知識)。次に、通訳を開始し、知識を調べて、何かが正しいかどうかを質問します。

A = B と書くことは、A が常に B であることを意味します。

?- initialstate(_,List,_),add(4,List,List)

リストの初期状態は、リストに追加された 4 がリスト自体であることを意味します。これは違いtrueます。4 が追加された場合、以前は 4 がなかった場所に 4 が存在するはずです。

あなたはこれを行うことができます:

append4(List, ListWithFourInside) :- append(List, [4], ListWithFourInside).

リストに 4 を追加すると、内部に 4 を含むリストが得られます。

最初に4が必要な場合は、短くすることができます

add4(List, ListWithFourInside) :- [4 | List] = ListWithFourInside.

またはさらに短い:

add4(List, [4|List]).
于 2013-10-09T20:52:56.750 に答える