删除列表 L 的最后 3 个元素以在 Prolog 中创建列表 L1

Bob*_*ith 3 list prolog

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

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

Cap*_*liC 5

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

delete_last_3(L, L1) :-  
 append(L1, [_,_,_], L).
Run Code Online (Sandbox Code Playgroud)

现在另一个请求变得简单:

delete_first_and_last_3(L, L2) :-  
  append([_,_,_], LT, L), delete_last_3(LT, L2).
Run Code Online (Sandbox Code Playgroud)

测试:

?- 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] .
Run Code Online (Sandbox Code Playgroud)