5

所以我正在尝试编写一个执行以下操作的小程序。

我可以在列表中搜索元素,如果在列表中找到该元素,则打印出列表以确认已找到。

所以在基本的伪 -

  1. 元素列表 - 计算机、鼠标、键盘、网络摄像头
  2. 在此列表中搜索鼠标
  3. 输出找到鼠标的列表

在做一些阅读时,我发现了一些我想做的事情。这是下面

on(Item,[Item|Rest]).  

on(Item,[DisregardHead|Tail]):-
on(Item, Tail). 

如果我输入查询 - on(apples, [pear,grape,banana,plum,apples])。然后它在列表中搜索,丢弃不相关的元素,直到它结束并成功。

我想要做的是在编辑器中编写我自己的列表,并通过对它执行与上面相同的功能来处理它。(而不是仅仅将列表作为查询输入到控制台中。)

谢谢

4

2 回答 2

6

您可以在程序中定义

list_of_my_elements([pear, grape, banana, plum, apples]).

in_my_list_of_elements(X) :- 
    list_of_my_elements(L),
    member(X, L).

然后查询

?- in_my_list_of_elements(apple).

我不会重新实现和重命名成员谓词。

于 2012-11-19T15:13:55.693 回答
2

域 x = 整数 l = 整数*

谓词 find(l,x)

条款

find([],N) :-
    write("There is no such element in the list"),nl.

find([Element|List],1) :-
    write("The element is ",Element),nl.

find([Element|List],N) :-
    N1 = N-1,
    find(List,N1).

输出 :

目标:find([1,2,3,4],3) 元素为 3 是

目标:find([1,2,3,4],0) 列表中没有这个元素 是

目标:find([1,2,3,4],5) 列表中没有这个元素 是

目标:find([1,2,4,3],4) 元素为 3 是

于 2016-05-28T18:06:57.797 回答