当前位置:  开发笔记 > 编程语言 > 正文

在Prolog中实现select/3

如何解决《在Prolog中实现select/3》经验,为你挑选了1个好方法。

我是Prolog的新手并遇到了这个谓词select/3.我想它是如何工作的,虽然我不确定我将如何自己实现它.我想是这样的:

selec(El,[El|T],T).
selec(El,[H|T],[H|S]) :-
      selec(El,T,S).
select(El,[],[]).

我知道有些事情是错的.我的解决方案只删除第一次出现.我希望它删除,在某些时候发生的所有事件,就像select/3那样.有任何想法吗?



1> Enigmativity..:

你的代码非常好,除了你不需要select(El,[],[]).谓词.

这就是你所需要的:

selec(El,[El|T],T).
selec(El,[H|T],[H|S]) :-
      selec(El,T,S).

请记住,标准的prolog参数顺序是输入,后跟输出,所以你真的应该像这样写:

selec([El|T],El,T).
selec([H|T],El,[H|S]) :-
      selec(T,El,S).

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有