list - 删除 List L 的最后 3 个元素以在 Prolog 中生成 List L1

标签 list prolog

如何编写一个目标,从列表 L 中删除最后三个元素,生成另一个列表 L1?

另外,我将如何编写多个目标来删除列表 L 中的前三个元素和后三个元素,从而产生 L2?

最佳答案

Prolog 它与其他语言有点不同,但它也有一个值得学习的库(标准 ISO):

delete_last_3(L, L1) :-  
 append(L1, [_,_,_], L).

现在另一个请求很容易:

delete_first_and_last_3(L, L2) :-  
  append([_,_,_], LT, L), delete_last_3(LT, L2).

测试:

?- delete_last_3([1,2,3,4,5,6,7],X).
X = [1, 2, 3, 4] .

?- delete_first_and_last_3([1,2,3,4,5,6,7,8,9],L).
L = [4, 5, 6] .

关于list - 删除 List L 的最后 3 个元素以在 Prolog 中生成 List L1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7682473/

相关文章:

序言问题! 'singles'!

用于基于网络的人工智能的 Python 或 Ruby?

Prolog 游程长度编码

mysql - 使用 Prolog ODBC 接口(interface)

python - SWI-Prolog 中哈希表的实现

c - 列出 Windows 目录中的文件在 C 中不起作用

python - 向嵌套列表添加特定值

r - 数据框中的 list 不完整

python - 检查列表中是否存在具有特定值的字典

java - 元素不会从列表中删除