這裏是我的SWI-Prolog程序的輪廓: :- use_module(library(clpfd)).
consec1(L) :-
L=[L1,L2,L3,L4,L5,L6,L7,L8,L9],
L ins 1..9,
...,
abs(L5-L4)#=1,
all_different(L),
labeling([],L)
ab
我想寫一個謂詞pythagorean(X,Y,Z,W),可以生成所有三元組,如X^2 + Y^2 = Z^2,其中W >= X,Y,Z > 0。 這是我寫的: pyth(X,Y,Z,W) :-
X > 0,
Y > 0,
Z > 0,
S1 is X*X + Y*Y,
S2 is Z*Z,
S1 == S2,
W @> Z.
這就是問題簡而言之: 16個孩子要坐在4 x 4陣列椅子上。這些孩子是8個女孩(編號1..8)和8個男孩(編號9..16)。 1,3,5,8認爲男孩是墮胎 9,10,11,14認爲女孩是毛 這些對是敵人: [[1,2],[4,6],[4,7], [4,9],[9,11],[12,14],[14,16]] 找到兩個孩子不是敵人謂詞被定義爲: not_enemy(A, B) :-
NotA