使用系统谓词append/3
,编写谓词以返回:
感谢您的帮助。
答案 0 :(得分:2)
append( A, B, C)
是什么意思?意思是
A=[..........]
B=[.........]
C=[...................]
做什么
length( B, 2)
是什么意思?意思是
B = [X | B1 ],
length( B1, 1)
所以,这意味着
B = [X | B1 ],
B1 = [Y | B2],
length( B2, 0)
% i.e.
B = [X | B1 ],
B1 = [Y | B2],
B2 = []
% i.e.
B = [X | B1 ],
B1 = [Y | []]
% i.e.
B = [X | [Y | []]] = [X | [Y]]
= [X , Y | [] ]
= [X, Y ]
等等
B = [X, Y], append( A, B, C)
表示
A=[..........]
B=[XY]
C=[..........XY]
我认为这很清楚。这意味着我们可以定义
one_before_last(C, X) :-
% you can finish this up now!
并且我们看到B = [_, _]
的意思是length( B, 2)
(即,我们反向追踪方程式),我们可以将其他事物用作length
的参数。解决您的 other 所述问题。
答案 1 :(得分:1)
最后一个元素:append(_, [X], List)
最后两个元素:append(_, [X, Y], List)
最近n个元素:length(LastN, N), append(_, LastN, List)
前n个元素:length(FirstN, N), append(FirstN, _, List)