Я пытаюсь написать предикат, который, учитывая следующий список в Прологе:
[[1,a,b],[2,c,d],[[3,e,f],[4,g,h],[5,i,j]],[6,k,l]]
создаст следующий список:
[[6,k,l],[[5,i,j],[4,g,h],[3,e,f]],[2,c,d],[1,a,b]]
Как видите, я бы хотелсохранить порядок элементов на самом низком уровне, чтобы получить элементы в порядке 1, a, b и NOT b, a, 1.
Я также хотел бы сохранить глубину списков, то естьсписки, которые изначально являются вложенными, возвращаются как таковые, но в обратном порядке.
Мне удалось достичь желаемого порядка с помощью следующего кода, но глубина потеряна, то есть списки больше не вложены правильно:
accRev([F,S,T],A,R) :- F \= [_|_], S \= [_|_], T \= [_|_],
accRev([],[[F,S,T]|A],R).
accRev([H|T],A,R) :- accRev(H,[],R1), accRev(T,[],R2), append(R2,R1,R).
accRev([],A,A).
rev(A,B) :- accRev(A,[],B).
Буду признателен за помощь в исправлении кода, чтобы сохранить правильное вложение списков.Спасибо!