gpt4 book ai didi

Prolog 约束编程查找偶数和奇数

转载 作者:行者123 更新时间:2023-12-02 03:38:14 27 4
gpt4 key购买 nike

我需要创建一个谓词:

applyConstraints(L)

这对 L 中的变量应用了约束,使得 L 中没有两个连续元素都是奇数或偶数,我该怎么做?对于固定尺寸的 L 来说很简单,但是对于可变尺寸的 L 呢?我需要使用 sicstus-prolog clpfd 库来完成此操作。

最佳答案

% SICStus:

applyConstraints([]).
applyConstraints([X|Xs]) :-
X mod 2 #= R,
applyConstraints(Xs, R).

applyConstraints([], _).
applyConstraints([X|Xs], R) :-
X mod 2 #= S,
S #\= R,
applyConstraints(Xs, S).

% Query:

| ?- applyConstraints(L), length(L,2), !, domain(L,-2,2), labeling([],L).
L = [-2,-1] ? ;
L = [-2,1] ? ;
L = [-1,-2] ? ;
L = [-1,0] ? ;
L = [-1,2] ? ;
L = [0,-1] ? ;
L = [0,1] ? ;
L = [1,-2] ? ;
L = [1,0] ? ;
L = [1,2] ? ;
L = [2,-1] ? ;
L = [2,1] ? ;
no

关于Prolog 约束编程查找偶数和奇数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21584521/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com