首页 文章

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

提问于
浏览
0

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

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

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

我试图让返回列表 .

例如:

[2,4,6]

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

[6,8,10]

应该返回 [4,12]

1 回答

  • 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).
    

相关问题