diff -r 1bd800376e0c -r c02929f2647c progs/sudoku.scala --- a/progs/sudoku.scala Wed Dec 02 01:15:14 2020 +0000 +++ b/progs/sudoku.scala Mon Dec 07 01:25:41 2020 +0000 @@ -21,8 +21,12 @@ def empty(game: String) = game.indexOf(emptyValue) def isDone(game: String) = empty(game) == -1 -def emptyPosition(game: String) : Pos = - (empty(game) % maxValue, empty(game) / maxValue) +//def emptyPosition(game: String) : Pos = +// (empty(game) % maxValue, empty(game) / maxValue) +def emptyPosition(game: String) = { + val e = empty(game) + (e % maxValue, e / maxValue) +} def get_row(game: String, y: Int) = indexes.map(col => game(y * maxValue + col)) @@ -65,7 +69,7 @@ } def pretty(game: String): String = - "\n" + (game.sliding(maxValue, maxValue).mkString(",\n")) + "\n" + (game.grouped(maxValue).mkString(",\n")) // a list of hard games according to Andrew Coles and Peter Norvig @@ -78,8 +82,8 @@ "6.2.5.........3.4..........43...8....1....2........7..5..27...........81...6.....", ".524.........7.1..............8.2...3.....6...9.5.....1.6.3...........897........", "6.2.5.........4.3..........43...8....1....2........7..5..27...........81...6.....", - ".923.........8.1...........1.7.4...........658.........6.5.2...4.....7.....9.....", - + ".923.........8.1...........1.7.4...........658.........6.5.2...4.....7.....9.....") +/* "85...24..72......9..4.........1.7..23.5...9...4...........8..7..17..........36.4.", "..53.....8......2..7..1.5..4....53...1..7...6..32...8..6.5....9..4....3......97..", "12..4......5.69.1...9...5.........7.7...52.9..3......2.9.6...5.4..9..8.1..3...9.4", @@ -183,9 +187,9 @@ "3...8.......7....51..............36...2..4....7...........6.13..452...........8..", "....14....3....2...7..........9...3.6.1.............8.2.....1.4....5.6.....7.8...", "4.....8.5.3..........7......2.....6.....8.4......1.......6.3.7.5..2.....1.4......") - -println("108:\n" ++ pretty(hard_games(108).replaceAll("\\.", " ")) ++ "\n") -println("109:\n" ++ pretty(hard_games(109).replaceAll("\\.", " ")) ++ "\n") +*/ +//println("108:\n" ++ pretty(hard_games(108).replaceAll("\\.", " ")) ++ "\n") +//println("109:\n" ++ pretty(hard_games(109).replaceAll("\\.", " ")) ++ "\n") // for measuring time