import jp.kobe_u.copris._ import jp.kobe_u.copris.dsl._ def define(board: Seq[Seq[Int]]) { val n = 9; val m = 3 init for (i <- 0 until n; j <- 0 until n) int('x(i,j), 1, n) for (i <- 0 until n) add(Alldifferent((0 until n).map(j => 'x(i,j)))) for (j <- 0 until n) add(Alldifferent((0 until n).map(i => 'x(i,j)))) for (i <- 0 until n by m; j <- 0 until n by m) { val xs = for (di <- 0 until m; dj <- 0 until m) yield 'x(i+di,j+dj) add(Alldifferent(xs)) } for (i <- 0 until n; j <- 0 until n) if (board(i)(j) > 0) add('x(i,j) === board(i)(j)) } val sudoku_fujiwara = Seq( Seq(0, 0, 0, 0, 0, 0, 0, 0, 0), Seq(0, 4, 3, 0, 0, 0, 6, 7, 0), Seq(5, 0, 0, 4, 0, 2, 0, 0, 8), Seq(8, 0, 0, 0, 6, 0, 0, 0, 1), Seq(2, 0, 0, 0, 0, 0, 0, 0, 5), Seq(0, 5, 0, 0, 0, 0, 0, 4, 0), Seq(0, 0, 6, 0, 0, 0, 7, 0, 0), Seq(0, 0, 0, 5, 0, 1, 0, 0, 0), Seq(0, 0, 0, 0, 8, 0, 0, 0, 0) )