Prolog - 搜索元素列表,如果找到元素则打印列表

时间:2012-11-19 14:51:32

标签: list prolog

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

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

所以在基本的伪 -

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

    在做一些阅读的时候,我发现了一些可以做我想做的事情。这是

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

    如果我输入查询 -     在(苹果,[梨,葡萄,香蕉,李子,苹果])。 然后它搜索列表,丢弃不相关的元素,直到它结束并成功。

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

    由于

2 个答案:

答案 0 :(得分:3)

您可以在程序中定义

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).

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

答案 1 :(得分:1)

域     x =整数     l =整数*

谓词     找到(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).

输出:

目标:找到([1,2,3,4],3) 元素是3 是

目标:找到([1,2,3,4],0) 列表中没有这样的元素 是

目标:找到([1,2,3,4],5) 列表中没有这样的元素 是

目标:找到([1,2,4,3],4) 元素是3 是