我已经创建了一个谓词,它将检查列表中的所有项是否满足条件。
在本例中,谓词检查所有元素是否为两个Check_Multiples/1
的倍数,这很好。
如何检查哪些项可以添加到列表的开头或结尾,并仍然满足谓词的要求?
我正试着把退货单列出来。
例如:
[2,4,6]
应该返回[8]
作为(因为谓词不允许0)
[6,8,10]
应该返回[4,12]
发布于 2016-04-27 20:44:01
下面的代码应该可以做到这一点,因为Check_Multiples检查列表中的每个元素是否是两个元素的升序倍数。我猜这是一个条件,否则如果允许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).
https://stackoverflow.com/questions/36895753
复制相似问题