Minizinc 中的include 与 alldifferent

经典的SEND + MORE = MONEY问题

  对于一个集合【S,E,N,D,M,O,R,Y】,每个字母代表一个数字,使得等式成立。
  这里用Minizinc语言中的alldifferent全局变量,顾名思义,数组中的所有元素都不相同。
  使用前需要提前引如alldifferent.mzn文件或者globals.mzn
  代码如下:
  

% SEND + MORE = MONEY

 include "alldifferent.mzn";

 var 1..9: S;
 var 0..9: E;
 var 0..9: N;
 var 0..9: D;
 var 1..9: M;
 var 0..9: O;
 var 0..9: R;
 var 0..9: Y;

 constraint 1000*S + 100*E + 10*N + D 
          + 1000*M + 100*O + 10*R + E
          = 10000*M + 1000*O + 100*N + 10*E + Y;

 constraint alldifferent([S,E,N,D,M,O,R,Y]);

 solve satisfy;

 output ["\(S)\(E)\(N)\(D) + \(M)\(O)\(R)\(E) = \(M)\(O)\(N)\(E)\(Y)"];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值