在Prolog中按列表的深度划分列表并递增列表的每个元素

时间:2012-04-06 18:40:05

标签: list prolog

我正在尝试按其深度递增列表的每个元素。例如:

foo([0, 0, [0]], [1, 1, [2]]) -> true

另外,我想在没有任何内置的Prolog列表谓词的情况下这样做。关于如何解决这个问题的任何想法?

2 个答案:

答案 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).