Что означает 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
. Для решения ваших других заявленных проблем.