我正在尝试按其深度递增列表的每个元素。例如:
foo([0, 0, [0]], [1, 1, [2]]) -> true
另外,我想在没有任何内置的Prolog列表谓词的情况下这样做。关于如何解决这个问题的任何想法?
答案 0 :(得分:0)
对于divide_half,您需要验证两件事(可以单独完成):列表定义了某种分割,并且分割的部分具有足够的长度。
对于第二个,首先尝试查找每个元素,然后修改它以跟踪深度,最后修改THAT以构建列表的副本w /修改的元素(虽然我不明白它意味着什么用数字增加一个东西。)
答案 1 :(得分:0)
此定义将没有任何内置谓词的列表分开:
halve(List, A, B) :- halve(List, List, A, B).
halve(B, [], [], B).
halve(B, [_], [], B).
halve([H|T], [_,_|T2], [H|A], B) :-
halve(T, T2, A, B).