2017-05-28 2 views
-1

結果はtag(N, X)構造体のリストです.Nは値1,2,3、です。 。 。 Xはリスト要素を表します。たとえば、プロローグにリスト内の各要素をタグ付けし、数値を関連付けたプロシージャを書くにはどうすればいいですか?

?- tagit([wibble,33,junk,phew],L). 
L = [tag(1, wibble), tag(2, 33), tag(3, junk), tag(4, phew)] 

私はPrologを初めて使用しており、これを完了する必要があります。

+1

ここでは厳しいユーザーがいるようです。どこかについていたので、@WillNessに応答できませんでした。コードを試してみましょう。 – Bhawna39

答えて

0

あなたは何を知っていますかリストは?

list(X):- X=[]. 

[]がリストです。

list(X):- X=[A|B], list(B). 

[A|B]Bがリストである場合は、リストです。

タグリストとは何ですか?

taglist(Y):- Y=[]. 

[]はタグリストです。

taglist(Y):- Y=[C|D], C=tag(N,V), taglist(D). 

[C|D]一部NVC=tag(N,V)場合タグリストで、Dはタグリストです。

私たちは一緒に2つを入れて1つにまとめることはできますか?はい、できます:

taglist2(X,Y):- X=[], Y=[]. 
taglist2(X,Y):- X=[A|B], Y=[C|D], ...., taglist2(B,D). 

Aとは何ですか? Vとは何ですか?

Nとは何ですか?それは数字です。最初の番号は1です:

number(N,One):- N is One. 

次の数は前のものから発見され、

number(N,Prev):- Next is Prev + 1, number(N,Next). 

として、我々は一緒に三人を粉砕することはできますか?はい、できます。それを試してみてください、それは楽しいです。

+0

'taglist2(X、Y)を助けてくれてありがとう: - X = []、Y = []。taglist2(X、Y): - X = [A | B]、Y = [C | D]、taglist2(B、D)。 : - taglist2([S、T]、[W、X])。 これは私が試みたものです。これは、2つが結合された単一の配列を返します。私が望むのは二重鎖が返されることです。私が間違っていることはありますか? – Bhawna39

+0

はい、そこに '....'があります。省略されていない実際のコードに置き換えてください。 (そして数字もまたカウントアップされるべきです)。 "二重鎖"については、私はあなたを理解していないし、あなたの質問とは異なって見えます。質問を変えないでください。あなたはそれを持っている場合は新しいものを尋ねる。 –

+0

まあ、それは新しい質問ではありません...しかし、私はプロローグにはあまりにも新しいです。私は一度基本に戻るべきだと思う。ありがとう:) – Bhawna39

関連する問題