Prolog List,检查列表的附加内容

时间:2016-04-27 16:33:56

标签: list prolog

我创建了一个谓词,用于检查列表中的所有项是否满足条件。

对于此示例,谓词检查所有元素是否为两个Check_Multiples/1的倍数,这非常有效。

我如何检查哪些项目可以添加到列表的开头或结尾,仍然满足谓词?

我正在尝试将返回列表。

例如:

[2,4,6]

应该返回[8] as(因为谓词不允许0)

[6,8,10]

应该返回[4,12]

1 个答案:

答案 0 :(得分:0)

以下代码应该可以解决这个问题,因为Check_Multiples会按升序检查列表中的每个元素是否为2的倍数。我猜这是一个条件,否则如果允许[4,6,4,4,8]这样的列表,你可以检查每个元素模数2是否等于0.

additionsToList([H|T], ResultList) :-
    Check_Multiples([H|T]),
    firstElement(H, First),
    lastElement(T, Last),
    append([First],[Last], Z),
    flatten(Z, ResultList).

firstElement(2, []).
firstElement(First, X) :-
    X is First-2.

lastElement([H|[]], X) :-
    X is H+2.
lastElement([_|T], X) :-
    lastElement(T, X).