从SWI-Prolog中的列表删除

问题描述 投票:0回答:1

我是SWI-Prolog的初学者,遇到了问题。请帮我。如何从列表中删除最后一次出现的9?

示例:

?- delete([9,9,9])
[9,9]
?- delete([9,4,1,2,3,9,53,2,9,2])
[9,4,1,2,3,9,53,2,2]
prolog swi-prolog
1个回答
0
投票

您必须1)将列表分解为Prefix列表(可能包含9s),[9]单元素列表和Suffix列表(不包含9s),然后将Prefix连接起来和Suffix列表。编写一个谓词,该谓词在给定列表Prefix的情况下发现SuffixL

[如果我们不做程序上的思考或按照“ CPU会花多少钱”的思路,发现decompose(List,Prefix,Suffix)Prefix的谓词Suffix可以写在一个子句中,这是纯逻辑的语句,使用append/2member/2以及否定作为失败。

一个人只需要第二行来说明List中没有9开头的情况。

© www.soinside.com 2019 - 2024. All rights reserved.