我创建了一个谓词,用于检查列表中的所有项是否满足条件。
对于此示例,谓词检查所有元素是否为两个Check_Multiples/1
的倍数,这非常有效。
我如何检查哪些项目可以添加到列表的开头或结尾,仍然满足谓词?
我正在尝试将返回列表。
例如:
[2,4,6]
应该返回[8]
as(因为谓词不允许0)
[6,8,10]
应该返回[4,12]
答案 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).