0

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

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

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

4

2 回答 2

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).
于 2012-04-06T20:09:44.440 回答
0

对于 divide_half,您需要验证两件事(可以独立完成):列表定义了某种拆分,并且拆分的部分具有足够接近的长度。

其次,首先尝试查找每个元素,然后对其进行修改以跟踪深度,最后对其进行修改以构建列表的副本,其中包含已修改的元素(尽管我不明白这对一个人意味着什么-增加一个数字)。

于 2012-04-06T18:59:47.397 回答