Prolog语言提取列表前两个及最后两个元素的实现咨询
Prolog自定义谓词实现列表元素提取
功能说明
实现自定义谓词my_list/2,接收一个列表作为输入,提取该列表的前两个元素和最后两个元素,组合为新列表返回。
实现代码
my_list(InputList, Result) :- % 匹配提取前两个元素 InputList = [First, Second | _], % 匹配提取最后两个元素 append(_, [LastSecond, Last], InputList), % 按要求组合新列表 Result = [First, Second, LastSecond, Last].
代码说明
- 利用Prolog列表的结构匹配特性,
[First, Second | _]可以直接拆分出列表的前两个元素,下划线为占位符,表示不需要用到中间的剩余内容 - 内置谓词
append/3在这里用来匹配列表末尾的两个元素,当传入的第二个参数为长度为2的列表时,会自动定位到输入列表的最后两位 - 该实现要求输入列表长度至少为4,否则会查询失败,符合功能逻辑要求
运行测试
输入测试用例运行效果如下:
?- my_list([a,b, [c,[h], d], [] ,e, h], Q). Q = [a,b,e,h].
内容的提问来源于stack exchange,提问作者Sevo Berwari
相关产品推荐
相关产品推荐

