如何在 PROLOG 中从 (3 2 1 2 3) 制作像 (3 (2 (1) 2) 3) 这样的嵌套列表?
有一个条件:不允许使用循环运算符、直接访问列表元素的函数或高级列表处理运算符
无法正常工作:
nested_list([], []).
nested_list([H|T], [H|[NestedT]]) :-
nested_list(T, NestedT).
?- phrase(palin(T),[3,2,1,2,3]).
T = [3,[2,[1],2],3]
; false.
?- phrase(palin(T),L).
T = [], L = []
; T = [_A], L = [_A]
; T = [_A,[],_A], L = [_A,_A]
; T = [_A,[_B],_A], L = [_A,_B,_A]
; T = [_A,[_B,[],_B],_A], L = [_A,_B,_B,_A]
; T = [_A,[_B,[_C],_B],_A], L = [_A,_B,_C,_B,_A]
; ... .