从列表中删除重复项并返回修改后的列表Prolog
prolog谓词将列入列表并删除重复项,然后返回修改后的列表。
下面的代码非常适合删除重复项并返回它,但是它采用了两个参数。如何获得1个参数的相同结果?示例remove_duplicates(列表)。
remove_duplicates([],[]).
remove_duplicates([X|Y],Z):-
member(X,Y),
!,
remove_duplicates(Y,Z).
remove_duplicates([X|Y],[X|Z]):-
remove_duplicates(Y,Z).
Prolog predicate to take in a list and remove duplicates then return the modified list back.
The below code works well for removing duplicates and returning it however it is taking two parameters. How can i achieve the same result taking 1 parameter? example remove_duplicates(List).
remove_duplicates([],[]).
remove_duplicates([X|Y],Z):-
member(X,Y),
!,
remove_duplicates(Y,Z).
remove_duplicates([X|Y],[X|Z]):-
remove_duplicates(Y,Z).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果不使用 破坏性赋值谓词,不鼓励使用,不应在您的问题中使用。
以下代码使用
setarg/3
执行您想要的实例化列表的操作,以破坏性地修改术语,但不建议这样做:示例运行:
You cannot do what you want in prolog (modify an instantiated part of a term) without using destructive assignment predicates, which are discouraged and should not be used in your problem.
The following code does what you want for instantiated lists using
setarg/3
to destructively modify a term, but is not recommended:Sample run: