我如何编写从列表 L 中删除最后三个元素的目标,从而生成另一个列表 L1?
另外,我将如何编写多个目标以从生成 L2 的列表 L 中删除前三个元素和最后三个元素?
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)