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

List Prolog-搜索元素列表,如果找到元素,则打印列表,list,prolog,List,Prolog,因此,我正在尝试编写一个小程序,它可以执行以下操作 我可以在列表中搜索一个元素,如果在列表中找到了该元素,那么将打印该列表以确认已找到该元素 所以在基本的伪- 元素列表-计算机、鼠标、键盘、网络摄像头 在此列表中搜索鼠标 输出在其中找到鼠标的列表 在阅读的过程中,我发现了一些我非常想做的事情。这是下面 on(Item,[Item|Rest]). on(Item,[DisregardHead|Tail]):- on(Item, Tail). 如果我键入查询- 在(苹果、[梨、葡萄、香蕉、

因此,我正在尝试编写一个小程序,它可以执行以下操作

我可以在列表中搜索一个元素,如果在列表中找到了该元素,那么将打印该列表以确认已找到该元素

所以在基本的伪-

  • 元素列表-计算机、鼠标、键盘、网络摄像头
  • 在此列表中搜索鼠标
  • 输出在其中找到鼠标的列表
  • 在阅读的过程中,我发现了一些我非常想做的事情。这是下面

    on(Item,[Item|Rest]).  
    
    on(Item,[DisregardHead|Tail]):-
    on(Item, Tail). 
    
    如果我键入查询- 在(苹果、[梨、葡萄、香蕉、李子、苹果])上。 然后它在列表中搜索,丢弃不相关的元素,直到它结束并成功

    我想做的是在编辑器中编写我自己的列表,然后像上面一样对其执行相同的功能(而不是将列表作为查询输入控制台)


    谢谢

    您可以在程序中定义

    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).
    
    我不会重新实现和重命名成员谓词。

    域 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
    是的

    您能否改进(编辑)您的问题以澄清什么是“从我在编辑器窗口中编写的列表中执行此操作”?基本上,我发布的代码是编辑器中编译的唯一内容。所以我从控制台运行的查询是on(苹果、[梨、葡萄、香蕉、李子、苹果])。然而,我想有一个预先编写和编译的列表来对付。谢谢你的回答,这很有帮助。如果可以的话,我可以稍微延长一下这个问题。如果我想实际打印“在此列表中找到苹果”或“此列表中未找到苹果”,该怎么办?我知道'write'函数,但我会如何使用它,就像我上面所说的那样?如果您不想在查询中使用它,我会包装成员函数。member_print(X,L):-member(X,L),write(X),write('found in the list')。