From 84c3de9e4a5cbdbdcc6c59d52ee5418581b3c481 Mon Sep 17 00:00:00 2001 From: Philippe Suter <philippe.suter@gmail.com> Date: Mon, 11 Jul 2011 12:44:18 +0000 Subject: [PATCH] changse --- cp-demo/PaperExamples.scala | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/cp-demo/PaperExamples.scala b/cp-demo/PaperExamples.scala index 2afe523c5..858d93de1 100644 --- a/cp-demo/PaperExamples.scala +++ b/cp-demo/PaperExamples.scala @@ -82,32 +82,33 @@ object PaperExamples extends App { assuming(m(l) >= 0 && m(l) <= 9) { println("OK for " + l) } - // we need this too because S and M occur as most significant digits - if (l == S() || l == M()) - assuming(m(l) >= 1) { - println(l + " greater than 0 OK") - } - - assuming( - 1000 * m(S()) + 100 * m(E()) + 10 * m(N()) + m(D()) + - 1000 * m(M()) + 100 * m(O()) + 10 * m(R()) + m(E()) == - 10000 * m(M()) + 1000 * m(O()) + 100 * m(N()) + 10 * m(E()) + m(Y())) { - println("OK for sum") - } - assuming(distinct(m(S()), m(E()), m(N()), m(D()), m(M()), m(O()), m(R()), m(Y()))) { - println("OK for distinct") + // we need this too because S and M occur as most significant digits + if (l == S() || l == M()) assuming(m(l) >= 1) { + println(l + " greater than 0 OK") } + } + assuming( + 1000 * m(S()) + 100 * m(E()) + 10 * m(N()) + m(D()) + + 1000 * m(M()) + 100 * m(O()) + 10 * m(R()) + m(E()) == + 10000 * m(M()) + 1000 * m(O()) + 100 * m(N()) + 10 * m(E()) + m(Y())) { + println("OK for sum") } + assuming(distinct(m(S()), m(E()), m(N()), m(D()), m(M()), m(O()), m(R()), m(Y()))) { + println("OK for distinct") + } + println("A solution : " + m.value) + + // functional-style, crashed because of if - val c : Constraint1[Map[Letter,Int]] = ((m: Map[Letter,Int]) => - 1000 * m(S()) + 100 * m(E()) + 10 * m(N()) + m(D()) + - 1000 * m(M()) + 100 * m(O()) + 10 * m(R()) + m(E()) == - 10000 * m(M()) + 1000 * m(O()) + 100 * m(N()) + 10 * m(E()) + m(Y())) + // val c : Constraint1[Map[Letter,Int]] = ((m: Map[Letter,Int]) => + // 1000 * m(S()) + 100 * m(E()) + 10 * m(N()) + m(D()) + + // 1000 * m(M()) + 100 * m(O()) + 10 * m(R()) + m(E()) == + // 10000 * m(M()) + 1000 * m(O()) + 100 * m(N()) + 10 * m(E()) + m(Y())) // this works too but I guess we should avoid enumerating maps // for(m <- c.lazyFindAll if( -- GitLab