Prolog 中的嵌套列表

问题描述 投票:0回答:1

如何在 PROLOG 中从 (3 2 1 2 3) 制作像 (3 (2 (1) 2) 3) 这样的嵌套列表?

有一个条件:不允许使用循环运算符、直接访问列表元素的函数或高级列表处理运算符

无法正常工作:

nested_list([], []).
nested_list([H|T], [H|[NestedT]]) :-
  nested_list(T, NestedT).    
prolog
1个回答
0
投票
?- 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]
;  ... .
© www.soinside.com 2019 - 2024. All rights reserved.