3
我想有一個列表L包含三個元素A,B和C具有以下約束,約束規劃
:- use_module(library(clpfd)).
L[A,B,C], L ins 1..3, A#=B+C.
但是,它給出了一個錯誤 - Syntax error: Operator expected.
我想有一個列表L包含三個元素A,B和C具有以下約束,約束規劃
:- use_module(library(clpfd)).
L[A,B,C], L ins 1..3, A#=B+C.
但是,它給出了一個錯誤 - Syntax error: Operator expected.
剛回答,以便將問題排除在未回答問題列表之外: 錯誤可能也是(: - )/ 2,不僅是缺少的(=)/ 2。所以下面 會議wurks:
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 7.1.11)
Copyright (c) 1990-2014 University of Amsterdam, VU Amsterdam
?- use_module(library(clpfd)).
% library(occurs) compiled into occurs 0.00 sec, 14 clauses
% library(apply_macros) compiled into apply_macros 0.01 sec, 51 clauses
% library(assoc) compiled into assoc 0.01 sec, 103 clauses
% library(clpfd) compiled into clpfd 0.12 sec, 2,694 clauses
true.
?- L=[A,B,C], L ins 1..3, A#=B+C.
L = [A, B, C],
A in 2..3,
B+C#=A,
B in 1..2,
C in 1..2.
在上面我們只得到儘可能說明問題包括方程 和可變範圍。枚舉的解決方案之一具有使用 標籤/ 2謂詞,以及:
?- L=[A,B,C], L ins 1..3, A#=B+C, label(L).
L = [2, 1, 1],
A = 2,
B = C, C = 1
L = [3, 1, 2],
A = 3,
B = 1,
C = 2
L = [3, 2, 1],
A = 3,
B = 2,
C = 1.
再見
你可能指 'L = [A,B,C]'(即 「=」 已丟失)。 – hakank