如何在prolog中编写一个过程来标记列表中的每个元素,并将数字与它相关联

时间:2017-05-28 15:31:22

标签: prolog

结果是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 个答案:

答案 0 :(得分:0)

你知道 list 是什么吗?

[]

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]

C=tag(N,V)是一个标记列表,如果N 某些 VDtaglist2(X,Y):- X=[], Y=[]. taglist2(X,Y):- X=[A|B], Y=[C|D], ...., taglist2(B,D). 是标记列表。

我们可以将两者合并在一起,将它们粉碎成一个吗?是的,我们可以:

A

什么是V?什么是N

什么是number(N,One):- N is One. ?这是一个数字。第一个数字是1:

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

从前一个号码中找到下一个号码,如

<item android:id="@+id/navigation_item1"
            android:checkable="true"
            android:title="Map"
            android:textColor="#FFFFFF"
            android:icon="@mipmap/ic_launcher"/>

我们可以把他们三个粉碎在一起吗?我们可以。试试吧,这很有趣。