diff --git a/cp-demo/PaperExamples.scala b/cp-demo/PaperExamples.scala index 2afe523c5ed4c1b26e54e2ce0b0087a9b8404088..858d93de1bfbb849ee11c9425d06f18ed70f467d 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(