📄 olympic.pl
字号:
% File : olympic.pl
% Author : Neng-Fa ZHOU
% Date : 1993
% Purpose: solve a puzzle taken from Olympic Arithmetic Contest
/***********************************************************************
Given ten variables with the following configuration:
X7 X8 X9 X10
X4 X5 X6
X2 X1
X1
We already know that X1 is equal to 3 and want to assign each variable
with a different integer from {1,2,...,10} such that for any three
variables
Xi Xj
Xk
the following constraint is satisfied:
|Xi-Xj| = Xk
***********************************************************************/
top:-
vars_cs(Vars),
labeling(Vars),
write(Vars).
go:-
cputime(S),
top,
cputime(E),
T is E-S,
write(T), write(' milliseconds').
vars_cs(Vars):-
Vars=[X1,X2,X3,X4,X5,X6,X7,X8,X9,X10],
in(Vars,1..10),
alldifferent(Vars),
X1#=3,
minus(X2,X3,X1),
minus(X4,X5,X2),
minus(X5,X6,X3),
minus(X7,X8,X4),
minus(X8,X9,X5),
minus(X9,X10,X6).
minus(X,Y,Z):-
X-Y#=Z.
minus(X,Y,Z):-
Y-X#=Z.
mylabeling([]).
mylabeling([V|Vs]):-
indomain(V),
write(V),write(' '),
(V=2->write('from here'),c_START_TRACE;true),
mylabeling(Vs).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -