Skip to content

Instantly share code, notes, and snippets.

@dholbrook
Created September 4, 2012 15:38
Show Gist options
  • Save dholbrook/3622539 to your computer and use it in GitHub Desktop.
Save dholbrook/3622539 to your computer and use it in GitHub Desktop.
brute force Sudoku solver
/**
* D Holbrook
*
* Code Club: Sudoku solver
*
* Brute force solver
*/
object Sudoku extends App {
val valid = Range(1, 10)
val rows = Range(0, 81).grouped(9).toIndexedSeq
val cols = Range(0, 9).flatMap(c => rows.map(r => r(c))).grouped(9).toIndexedSeq
val blocks = (for (
rg <- Range(0, 9).grouped(3);
cg <- Range(0, 9).grouped(3);
r <- rg;
c <- cg
) yield (rows(r)(c))).grouped(9).toIndexedSeq
val rowsMap = buildLookup(rows)
val colsMap = buildLookup(cols)
val blocksMap = buildLookup(blocks)
def buildLookup(ess: Seq[Seq[Int]]): Map[Int, Seq[Int]] = {
ess.zipWithIndex.flatMap { case (es, ei) => es.map(i => i -> ess(ei)) }.toMap
}
def parsePuzzle(str: String): IndexedSeq[Int] = {
str.map(c => if (c == '.') '0' else c).filter(_.isDigit).map(_.asDigit)
}
def solve(p: IndexedSeq[Int]): Option[IndexedSeq[Int]] = {
def loop(p: IndexedSeq[Int], i: Int, ps: List[Int]): Option[IndexedSeq[Int]] = ps match {
case Nil => None
case hd :: tl => solve(p.patch(i, IndexedSeq(hd), 1)) match {
case Some(pz) => Some(pz)
case None => loop(p, i, tl)
}
}
next(p) match {
case None => Some(p)
case Some((i, ps)) => loop(p, i, ps)
}
}
/**
* Find the index of the next unsolved portion of the puzzle
*
* @param p The puzzle state
*
* @return Option with first unsolved index with a list of possible values, or None
*/
def next(p: IndexedSeq[Int]): Option[(Int, List[Int])] = {
//build list of indexes with value of zero
val unsolved = p.zipWithIndex.filter(_._1 == 0).map(_._2).toList
unsolved match {
//no unsolved
case Nil => None
//first unsolved with list of possible values
case u => Some(possible(p, u).head)
}
}
def possible(p: IndexedSeq[Int], u: List[Int]): List[(Int, List[Int])] = {
/*
* find all possible valid values for a given index via simple elimination
*/
def elim(i: Int): List[Int] = {
val all = (rowsMap(i) ++: colsMap(i) ++: blocksMap(i)).distinct
val used = all.filter(p(_) != 0).map(p(_))
valid.filter(!used.contains(_)).toList
}
u.map(i => (i -> elim(i))).sortBy(_._2.length)
}
def validate(p: IndexedSeq[Int]): Boolean = {
val sum = valid.sum
val all = rows ++: cols ++: blocks
all.foldLeft(true)((b, es) => if (es.map(p(_)).sum != sum) false else b)
}
def formatPuzzle(p: Seq[Int]): String = {
val rowSep = "------+-------+------\n"
def formatRow(r: Seq[Int]): String = {
"%s %s %s | %s %s %s | %s %s %s\n".format(r.map(v => if (v == 0) "." else v.toString): _*)
}
val rows = p.grouped(9).map(formatRow(_)).toList
rows.foldLeft((0, List[String]())) {
case ((i, sl), v) => (i + 1, if (i < 8 && (i + 1) % 3 == 0) rowSep :: v :: sl else v :: sl)
}._2.reverse.mkString
}
val source = io.Source.fromInputStream(getClass.getResourceAsStream("euler-sudoku.txt"))
val lines = source.mkString.split("\n")
source.close()
val puzzles = lines.toIndexedSeq.grouped(10)
val sum = puzzles.foldLeft(0) {
case (s, p) =>
println(p(0))
val op = parsePuzzle(p.drop(1).mkString)
println(formatPuzzle(op))
val solved = solve(op).get
println(formatPuzzle(solved))
println("\n")
s + solved.slice(0, 3).mkString.toInt
}
println("sum: " + sum)
//Output
//=========
//Grid 01
//
//. . 3 | . 2 . | 6 . .
//9 . . | 3 . 5 | . . 1
//. . 1 | 8 . 6 | 4 . .
//------+-------+------
//. . 8 | 1 . 2 | 9 . .
//7 . . | . . . | . . 8
//. . 6 | 7 . 8 | 2 . .
//------+-------+------
//. . 2 | 6 . 9 | 5 . .
//8 . . | 2 . 3 | . . 9
//. . 5 | . 1 . | 3 . .
//
//4 8 3 | 9 2 1 | 6 5 7
//9 6 7 | 3 4 5 | 8 2 1
//2 5 1 | 8 7 6 | 4 9 3
//------+-------+------
//5 4 8 | 1 3 2 | 9 7 6
//7 2 9 | 5 6 4 | 1 3 8
//1 3 6 | 7 9 8 | 2 4 5
//------+-------+------
//3 7 2 | 6 8 9 | 5 1 4
//8 1 4 | 2 5 3 | 7 6 9
//6 9 5 | 4 1 7 | 3 8 2
//
//
//
//Grid 02
//
//2 . . | . 8 . | 3 . .
//. 6 . | . 7 . | . 8 4
//. 3 . | 5 . . | 2 . 9
//------+-------+------
//. . . | 1 . 5 | 4 . 8
//. . . | . . . | . . .
//4 . 2 | 7 . 6 | . . .
//------+-------+------
//3 . 1 | . . 7 | . 4 .
//7 2 . | . 4 . | . 6 .
//. . 4 | . 1 . | . . 3
//
//2 4 5 | 9 8 1 | 3 7 6
//1 6 9 | 2 7 3 | 5 8 4
//8 3 7 | 5 6 4 | 2 1 9
//------+-------+------
//9 7 6 | 1 2 5 | 4 3 8
//5 1 3 | 4 9 8 | 6 2 7
//4 8 2 | 7 3 6 | 9 5 1
//------+-------+------
//3 9 1 | 6 5 7 | 8 4 2
//7 2 8 | 3 4 9 | 1 6 5
//6 5 4 | 8 1 2 | 7 9 3
//
//
//
//Grid 03
//
//. . . | . . . | 9 . 7
//. . . | 4 2 . | 1 8 .
//. . . | 7 . 5 | . 2 6
//------+-------+------
//1 . . | 9 . 4 | . . .
//. 5 . | . . . | . 4 .
//. . . | 5 . 7 | . . 9
//------+-------+------
//9 2 . | 1 . 8 | . . .
//. 3 4 | . 5 9 | . . .
//5 . 7 | . . . | . . .
//
//4 6 2 | 8 3 1 | 9 5 7
//7 9 5 | 4 2 6 | 1 8 3
//3 8 1 | 7 9 5 | 4 2 6
//------+-------+------
//1 7 3 | 9 8 4 | 2 6 5
//6 5 9 | 3 1 2 | 7 4 8
//2 4 8 | 5 6 7 | 3 1 9
//------+-------+------
//9 2 6 | 1 7 8 | 5 3 4
//8 3 4 | 2 5 9 | 6 7 1
//5 1 7 | 6 4 3 | 8 9 2
//
//
//
//Grid 04
//
//. 3 . | . 5 . | . 4 .
//. . 8 | . 1 . | 5 . .
//4 6 . | . . . | . 1 2
//------+-------+------
//. 7 . | 5 . 2 | . 8 .
//. . . | 6 . 3 | . . .
//. 4 . | 1 . 9 | . 3 .
//------+-------+------
//2 5 . | . . . | . 9 8
//. . 1 | . 2 . | 6 . .
//. 8 . | . 6 . | . 2 .
//
//1 3 7 | 2 5 6 | 8 4 9
//9 2 8 | 3 1 4 | 5 6 7
//4 6 5 | 8 9 7 | 3 1 2
//------+-------+------
//6 7 3 | 5 4 2 | 9 8 1
//8 1 9 | 6 7 3 | 2 5 4
//5 4 2 | 1 8 9 | 7 3 6
//------+-------+------
//2 5 6 | 7 3 1 | 4 9 8
//3 9 1 | 4 2 8 | 6 7 5
//7 8 4 | 9 6 5 | 1 2 3
//
//
//
//Grid 05
//
//. 2 . | 8 1 . | 7 4 .
//7 . . | . . 3 | 1 . .
//. 9 . | . . 2 | 8 . 5
//------+-------+------
//. . 9 | . 4 . | . 8 7
//4 . . | 2 . 8 | . . 3
//1 6 . | . 3 . | 2 . .
//------+-------+------
//3 . 2 | 7 . . | . 6 .
//. . 5 | 6 . . | . . 8
//. 7 6 | . 5 1 | . 9 .
//
//5 2 3 | 8 1 6 | 7 4 9
//7 8 4 | 5 9 3 | 1 2 6
//6 9 1 | 4 7 2 | 8 3 5
//------+-------+------
//2 3 9 | 1 4 5 | 6 8 7
//4 5 7 | 2 6 8 | 9 1 3
//1 6 8 | 9 3 7 | 2 5 4
//------+-------+------
//3 4 2 | 7 8 9 | 5 6 1
//9 1 5 | 6 2 4 | 3 7 8
//8 7 6 | 3 5 1 | 4 9 2
//
//
//
//Grid 06
//
//1 . . | 9 2 . | . . .
//5 2 4 | . 1 . | . . .
//. . . | . . . | . 7 .
//------+-------+------
//. 5 . | . . 8 | 1 . 2
//. . . | . . . | . . .
//4 . 2 | 7 . . | . 9 .
//------+-------+------
//. 6 . | . . . | . . .
//. . . | . 3 . | 9 4 5
//. . . | . 7 1 | . . 6
//
//1 7 6 | 9 2 3 | 5 8 4
//5 2 4 | 8 1 7 | 6 3 9
//8 9 3 | 6 5 4 | 2 7 1
//------+-------+------
//9 5 7 | 3 4 8 | 1 6 2
//6 3 8 | 1 9 2 | 4 5 7
//4 1 2 | 7 6 5 | 3 9 8
//------+-------+------
//2 6 5 | 4 8 9 | 7 1 3
//7 8 1 | 2 3 6 | 9 4 5
//3 4 9 | 5 7 1 | 8 2 6
//
//
//
//Grid 07
//
//. 4 3 | . 8 . | 2 5 .
//6 . . | . . . | . . .
//. . . | . . 1 | . 9 4
//------+-------+------
//9 . . | . . 4 | . 7 .
//. . . | 6 . 8 | . . .
//. 1 . | 2 . . | . . 3
//------+-------+------
//8 2 . | 5 . . | . . .
//. . . | . . . | . . 5
//. 3 4 | . 9 . | 7 1 .
//
//1 4 3 | 9 8 6 | 2 5 7
//6 7 9 | 4 2 5 | 3 8 1
//2 8 5 | 7 3 1 | 6 9 4
//------+-------+------
//9 6 2 | 3 5 4 | 1 7 8
//3 5 7 | 6 1 8 | 9 4 2
//4 1 8 | 2 7 9 | 5 6 3
//------+-------+------
//8 2 1 | 5 6 7 | 4 3 9
//7 9 6 | 1 4 3 | 8 2 5
//5 3 4 | 8 9 2 | 7 1 6
//
//
//
//Grid 08
//
//4 8 . | . . 6 | 9 . 2
//. . 2 | . . 8 | . . 1
//9 . . | 3 7 . | . 6 .
//------+-------+------
//8 4 . | . 1 . | 2 . .
//. . 3 | 7 . 4 | 1 . .
//. . 1 | . 6 . | . 4 9
//------+-------+------
//. 2 . | . 8 5 | . . 7
//7 . . | 9 . . | 6 . .
//6 . 9 | 2 . . | . 1 8
//
//4 8 7 | 1 5 6 | 9 3 2
//3 6 2 | 4 9 8 | 7 5 1
//9 1 5 | 3 7 2 | 8 6 4
//------+-------+------
//8 4 6 | 5 1 9 | 2 7 3
//5 9 3 | 7 2 4 | 1 8 6
//2 7 1 | 8 6 3 | 5 4 9
//------+-------+------
//1 2 4 | 6 8 5 | 3 9 7
//7 3 8 | 9 4 1 | 6 2 5
//6 5 9 | 2 3 7 | 4 1 8
//
//
//
//Grid 09
//
//. . . | 9 . . | . . 2
//. 5 . | 1 2 3 | 4 . .
//. 3 . | . . . | 1 6 .
//------+-------+------
//9 . 8 | . . . | . . .
//. 7 . | . . . | . 9 .
//. . . | . . . | 2 . 5
//------+-------+------
//. 9 1 | . . . | . 5 .
//. . 7 | 4 3 9 | . 2 .
//4 . . | . . 7 | . . .
//
//8 1 4 | 9 7 6 | 5 3 2
//6 5 9 | 1 2 3 | 4 7 8
//7 3 2 | 8 5 4 | 1 6 9
//------+-------+------
//9 4 8 | 2 6 5 | 3 1 7
//2 7 5 | 3 4 1 | 8 9 6
//1 6 3 | 7 9 8 | 2 4 5
//------+-------+------
//3 9 1 | 6 8 2 | 7 5 4
//5 8 7 | 4 3 9 | 6 2 1
//4 2 6 | 5 1 7 | 9 8 3
//
//
//
//Grid 10
//
//. . 1 | 9 . . | . . 3
//9 . . | 7 . . | 1 6 .
//. 3 . | . . 5 | . . 7
//------+-------+------
//. 5 . | . . . | . . 9
//. . 4 | 3 . 2 | 6 . .
//2 . . | . . . | . 7 .
//------+-------+------
//6 . . | 1 . . | . 3 .
//. 4 2 | . . 7 | . . 6
//5 . . | . . 6 | 8 . .
//
//7 6 1 | 9 2 8 | 4 5 3
//9 2 5 | 7 4 3 | 1 6 8
//4 3 8 | 6 1 5 | 9 2 7
//------+-------+------
//3 5 7 | 4 6 1 | 2 8 9
//8 9 4 | 3 7 2 | 6 1 5
//2 1 6 | 5 8 9 | 3 7 4
//------+-------+------
//6 8 9 | 1 5 4 | 7 3 2
//1 4 2 | 8 3 7 | 5 9 6
//5 7 3 | 2 9 6 | 8 4 1
//
//
//
//Grid 11
//
//. . . | 1 2 5 | 4 . .
//. . 8 | 4 . . | . . .
//4 2 . | 8 . . | . . .
//------+-------+------
//. 3 . | . . . | . 9 5
//. 6 . | 9 . 2 | . 1 .
//5 1 . | . . . | . 6 .
//------+-------+------
//. . . | . . 3 | . 4 9
//. . . | . . 7 | 2 . .
//. . 1 | 2 9 8 | . . .
//
//9 7 6 | 1 2 5 | 4 3 8
//1 5 8 | 4 3 6 | 9 2 7
//4 2 3 | 8 7 9 | 1 5 6
//------+-------+------
//2 3 4 | 7 6 1 | 8 9 5
//8 6 7 | 9 5 2 | 3 1 4
//5 1 9 | 3 8 4 | 7 6 2
//------+-------+------
//7 8 2 | 5 1 3 | 6 4 9
//3 9 5 | 6 4 7 | 2 8 1
//6 4 1 | 2 9 8 | 5 7 3
//
//
//
//Grid 12
//
//. 6 2 | 3 4 . | 7 5 .
//1 . . | . . 5 | 6 . .
//5 7 . | . . . | . 4 .
//------+-------+------
//. . . | . 9 4 | 8 . .
//4 . . | . . . | . . 6
//. . 5 | 8 3 . | . . .
//------+-------+------
//. 3 . | . . . | . 9 1
//. . 6 | 4 . . | . . 7
//. 5 9 | . 8 3 | 2 6 .
//
//9 6 2 | 3 4 1 | 7 5 8
//1 4 8 | 9 7 5 | 6 2 3
//5 7 3 | 2 6 8 | 1 4 9
//------+-------+------
//3 2 1 | 6 9 4 | 8 7 5
//4 8 7 | 5 1 2 | 9 3 6
//6 9 5 | 8 3 7 | 4 1 2
//------+-------+------
//8 3 4 | 7 2 6 | 5 9 1
//2 1 6 | 4 5 9 | 3 8 7
//7 5 9 | 1 8 3 | 2 6 4
//
//
//
//Grid 13
//
//3 . . | . . . | . . .
//. . 5 | . . 9 | . . .
//2 . . | 5 . 4 | . . .
//------+-------+------
//. 2 . | . . . | 7 . .
//1 6 . | . . . | . 5 8
//7 . 4 | 3 1 . | 6 . .
//------+-------+------
//. . . | 8 9 . | 1 . .
//. . . | . 6 7 | . 8 .
//. . . | . . 5 | 4 3 7
//
//3 9 7 | 6 8 1 | 5 2 4
//6 4 5 | 2 7 9 | 8 1 3
//2 1 8 | 5 3 4 | 9 7 6
//------+-------+------
//8 2 3 | 9 5 6 | 7 4 1
//1 6 9 | 7 4 2 | 3 5 8
//7 5 4 | 3 1 8 | 6 9 2
//------+-------+------
//4 7 2 | 8 9 3 | 1 6 5
//5 3 1 | 4 6 7 | 2 8 9
//9 8 6 | 1 2 5 | 4 3 7
//
//
//
//Grid 14
//
//6 3 . | . . . | . . .
//. . . | 5 . . | . . 8
//. . 5 | 6 7 4 | . . .
//------+-------+------
//. . . | . 2 . | . . .
//. . 3 | 4 . 1 | . 2 .
//. . . | . . . | 3 4 5
//------+-------+------
//. . . | . . 7 | . . 4
//. 8 . | 3 . . | 9 . 2
//9 4 7 | 1 . . | . 8 .
//
//6 3 9 | 2 1 8 | 4 5 7
//4 7 1 | 5 3 9 | 2 6 8
//8 2 5 | 6 7 4 | 1 3 9
//------+-------+------
//5 6 4 | 8 2 3 | 7 9 1
//7 9 3 | 4 5 1 | 8 2 6
//2 1 8 | 7 9 6 | 3 4 5
//------+-------+------
//3 5 2 | 9 8 7 | 6 1 4
//1 8 6 | 3 4 5 | 9 7 2
//9 4 7 | 1 6 2 | 5 8 3
//
//
//
//Grid 15
//
//. . . | . 2 . | . 4 .
//. . 8 | . 3 5 | . . .
//. . . | . 7 . | 6 . 2
//------+-------+------
//. 3 1 | . 4 6 | 9 7 .
//2 . . | . . . | . . .
//. . . | 5 . 1 | 2 . 3
//------+-------+------
//. 4 9 | . . . | 7 3 .
//. . . | . . . | . 1 .
//8 . . | . . 4 | . . .
//
//6 9 7 | 1 2 8 | 3 4 5
//4 2 8 | 6 3 5 | 1 9 7
//3 1 5 | 4 7 9 | 6 8 2
//------+-------+------
//5 3 1 | 2 4 6 | 9 7 8
//2 8 6 | 3 9 7 | 4 5 1
//9 7 4 | 5 8 1 | 2 6 3
//------+-------+------
//1 4 9 | 8 5 2 | 7 3 6
//7 5 2 | 9 6 3 | 8 1 4
//8 6 3 | 7 1 4 | 5 2 9
//
//
//
//Grid 16
//
//3 6 1 | . 2 5 | 9 . .
//. 8 . | 9 6 . | . 1 .
//4 . . | . . . | . 5 7
//------+-------+------
//. . 8 | . . . | 4 7 1
//. . . | 6 . 3 | . . .
//2 5 9 | . . . | 8 . .
//------+-------+------
//7 4 . | . . . | . . 5
//. 2 . | . 1 8 | . 6 .
//. . 5 | 4 7 . | 3 2 9
//
//3 6 1 | 7 2 5 | 9 4 8
//5 8 7 | 9 6 4 | 2 1 3
//4 9 2 | 8 3 1 | 6 5 7
//------+-------+------
//6 3 8 | 2 5 9 | 4 7 1
//1 7 4 | 6 8 3 | 5 9 2
//2 5 9 | 1 4 7 | 8 3 6
//------+-------+------
//7 4 6 | 3 9 2 | 1 8 5
//9 2 3 | 5 1 8 | 7 6 4
//8 1 5 | 4 7 6 | 3 2 9
//
//
//
//Grid 17
//
//. 5 . | 8 . 7 | . 2 .
//6 . . | . 1 . | . 9 .
//7 . 2 | 5 4 . | . . 6
//------+-------+------
//. 7 . | . 2 . | 3 . 1
//5 . 4 | . . . | 9 . 8
//1 . 3 | . 8 . | . 7 .
//------+-------+------
//9 . . | . 7 6 | 2 . 5
//. 6 . | . 9 . | . . 3
//. 8 . | 1 . 3 | . 4 .
//
//3 5 9 | 8 6 7 | 1 2 4
//6 4 8 | 3 1 2 | 5 9 7
//7 1 2 | 5 4 9 | 8 3 6
//------+-------+------
//8 7 6 | 9 2 4 | 3 5 1
//5 2 4 | 7 3 1 | 9 6 8
//1 9 3 | 6 8 5 | 4 7 2
//------+-------+------
//9 3 1 | 4 7 6 | 2 8 5
//4 6 5 | 2 9 8 | 7 1 3
//2 8 7 | 1 5 3 | 6 4 9
//
//
//
//Grid 18
//
//. 8 . | . . 5 | . . .
//. . . | . . 3 | 4 5 7
//. . . | . 7 . | 8 . 9
//------+-------+------
//. 6 . | 4 . . | 9 . 3
//. . 7 | . 1 . | 5 . .
//4 . 8 | . . 7 | . 2 .
//------+-------+------
//9 . 1 | . 2 . | . . .
//8 4 2 | 3 . . | . . .
//. . . | 1 . . | . 8 .
//
//7 8 6 | 9 4 5 | 3 1 2
//2 1 9 | 8 6 3 | 4 5 7
//5 3 4 | 2 7 1 | 8 6 9
//------+-------+------
//1 6 5 | 4 8 2 | 9 7 3
//3 2 7 | 6 1 9 | 5 4 8
//4 9 8 | 5 3 7 | 1 2 6
//------+-------+------
//9 5 1 | 7 2 8 | 6 3 4
//8 4 2 | 3 5 6 | 7 9 1
//6 7 3 | 1 9 4 | 2 8 5
//
//
//
//Grid 19
//
//. . 3 | 5 . 2 | 9 . .
//. . . | . 4 . | . . .
//1 . 6 | . . . | 3 . 5
//------+-------+------
//9 . . | 2 5 1 | . . 8
//. 7 . | 4 . 8 | . 3 .
//8 . . | 7 6 3 | . . 1
//------+-------+------
//3 . 8 | . . . | 1 . 4
//. . . | . 2 . | . . .
//. . 5 | 1 . 4 | 8 . .
//
//7 4 3 | 5 1 2 | 9 8 6
//5 8 9 | 3 4 6 | 2 1 7
//1 2 6 | 9 8 7 | 3 4 5
//------+-------+------
//9 3 4 | 2 5 1 | 7 6 8
//6 7 1 | 4 9 8 | 5 3 2
//8 5 2 | 7 6 3 | 4 9 1
//------+-------+------
//3 9 8 | 6 7 5 | 1 2 4
//4 1 7 | 8 2 9 | 6 5 3
//2 6 5 | 1 3 4 | 8 7 9
//
//
//
//Grid 20
//
//. . . | . . . | . . .
//. . 9 | 8 . 5 | 1 . .
//. 5 1 | 9 . 7 | 4 2 .
//------+-------+------
//2 9 . | 4 . 1 | . 6 5
//. . . | . . . | . . .
//1 4 . | 5 . 8 | . 9 3
//------+-------+------
//. 2 6 | 7 . 9 | 5 8 .
//. . 5 | 1 . 3 | 6 . .
//. . . | . . . | . . .
//
//7 8 2 | 6 1 4 | 3 5 9
//4 3 9 | 8 2 5 | 1 7 6
//6 5 1 | 9 3 7 | 4 2 8
//------+-------+------
//2 9 3 | 4 7 1 | 8 6 5
//5 6 8 | 3 9 2 | 7 1 4
//1 4 7 | 5 6 8 | 2 9 3
//------+-------+------
//3 2 6 | 7 4 9 | 5 8 1
//9 7 5 | 1 8 3 | 6 4 2
//8 1 4 | 2 5 6 | 9 3 7
//
//
//
//Grid 21
//
//. 2 . | . 3 . | . 9 .
//. . . | 9 . 7 | . . .
//9 . . | 2 . 8 | . . 5
//------+-------+------
//. . 4 | 8 . 6 | 5 . .
//6 . 7 | . . . | 2 . 8
//. . 3 | 1 . 2 | 9 . .
//------+-------+------
//8 . . | 6 . 5 | . . 7
//. . . | 3 . 9 | . . .
//. 3 . | . 2 . | . 5 .
//
//4 2 8 | 5 3 1 | 7 9 6
//3 6 5 | 9 4 7 | 1 8 2
//9 7 1 | 2 6 8 | 4 3 5
//------+-------+------
//2 1 4 | 8 9 6 | 5 7 3
//6 9 7 | 4 5 3 | 2 1 8
//5 8 3 | 1 7 2 | 9 6 4
//------+-------+------
//8 4 9 | 6 1 5 | 3 2 7
//7 5 2 | 3 8 9 | 6 4 1
//1 3 6 | 7 2 4 | 8 5 9
//
//
//
//Grid 22
//
//. . 5 | . . . | . . 6
//. 7 . | . . 9 | . 2 .
//. . . | 5 . . | 1 . 7
//------+-------+------
//8 . 4 | 1 5 . | . . .
//. . . | 8 . 3 | . . .
//. . . | . 9 2 | 8 . 5
//------+-------+------
//9 . 7 | . . 6 | . . .
//. 3 . | 4 . . | . 1 .
//2 . . | . . . | 6 . .
//
//4 2 5 | 7 8 1 | 9 3 6
//1 7 8 | 3 6 9 | 5 2 4
//3 6 9 | 5 2 4 | 1 8 7
//------+-------+------
//8 9 4 | 1 5 7 | 3 6 2
//6 5 2 | 8 4 3 | 7 9 1
//7 1 3 | 6 9 2 | 8 4 5
//------+-------+------
//9 8 7 | 2 1 6 | 4 5 3
//5 3 6 | 4 7 8 | 2 1 9
//2 4 1 | 9 3 5 | 6 7 8
//
//
//
//Grid 23
//
//. 4 . | . . . | . 5 .
//. . 1 | 9 4 3 | 6 . .
//. . 9 | . . . | 3 . .
//------+-------+------
//6 . . | . 5 . | . . 2
//1 . 3 | . . . | 5 . 6
//8 . . | . 2 . | . . 7
//------+-------+------
//. . 5 | . . . | 2 . .
//. . 2 | 4 3 6 | 7 . .
//. 3 . | . . . | . 4 .
//
//3 4 8 | 2 6 7 | 9 5 1
//5 7 1 | 9 4 3 | 6 2 8
//2 6 9 | 1 8 5 | 3 7 4
//------+-------+------
//6 9 7 | 3 5 1 | 4 8 2
//1 2 3 | 8 7 4 | 5 9 6
//8 5 4 | 6 2 9 | 1 3 7
//------+-------+------
//4 1 5 | 7 9 8 | 2 6 3
//9 8 2 | 4 3 6 | 7 1 5
//7 3 6 | 5 1 2 | 8 4 9
//
//
//
//Grid 24
//
//. . 4 | . . . | . . .
//. . . | . 3 . | . . 2
//3 9 . | 7 . . | . 8 .
//------+-------+------
//4 . . | . . 9 | . . 1
//2 . 9 | 8 . 1 | 3 . 7
//6 . . | 2 . . | . . 8
//------+-------+------
//. 1 . | . . 8 | . 5 3
//9 . . | . 4 . | . . .
//. . . | . . . | 8 . .
//
//1 2 4 | 9 8 6 | 7 3 5
//8 6 7 | 4 3 5 | 9 1 2
//3 9 5 | 7 1 2 | 6 8 4
//------+-------+------
//4 7 8 | 3 5 9 | 2 6 1
//2 5 9 | 8 6 1 | 3 4 7
//6 3 1 | 2 7 4 | 5 9 8
//------+-------+------
//7 1 2 | 6 9 8 | 4 5 3
//9 8 3 | 5 4 7 | 1 2 6
//5 4 6 | 1 2 3 | 8 7 9
//
//
//
//Grid 25
//
//3 6 . | . 2 . | . 8 9
//. . . | 3 6 1 | . . .
//. . . | . . . | . . .
//------+-------+------
//8 . 3 | . . . | 6 . 2
//4 . . | 6 . 3 | . . 7
//6 . 7 | . . . | 1 . 8
//------+-------+------
//. . . | . . . | . . .
//. . . | 4 1 8 | . . .
//9 7 . | . 3 . | . 1 4
//
//3 6 1 | 5 2 4 | 7 8 9
//7 8 9 | 3 6 1 | 4 2 5
//5 2 4 | 8 7 9 | 3 6 1
//------+-------+------
//8 9 3 | 1 5 7 | 6 4 2
//4 1 2 | 6 8 3 | 5 9 7
//6 5 7 | 9 4 2 | 1 3 8
//------+-------+------
//1 4 8 | 7 9 6 | 2 5 3
//2 3 5 | 4 1 8 | 9 7 6
//9 7 6 | 2 3 5 | 8 1 4
//
//
//
//Grid 26
//
//5 . . | 4 . . | . 6 .
//. . 9 | . . . | 8 . .
//6 4 . | . 2 . | . . .
//------+-------+------
//. . . | . . 1 | . . 8
//2 . 8 | . . . | 5 . 1
//7 . . | 5 . . | . . .
//------+-------+------
//. . . | . 9 . | . 8 4
//. . 3 | . . . | 6 . .
//. 6 . | . . 3 | . . 2
//
//5 8 1 | 4 7 9 | 2 6 3
//3 2 9 | 1 5 6 | 8 4 7
//6 4 7 | 3 2 8 | 1 5 9
//------+-------+------
//9 5 6 | 7 3 1 | 4 2 8
//2 3 8 | 9 6 4 | 5 7 1
//7 1 4 | 5 8 2 | 9 3 6
//------+-------+------
//1 7 2 | 6 9 5 | 3 8 4
//8 9 3 | 2 4 7 | 6 1 5
//4 6 5 | 8 1 3 | 7 9 2
//
//
//
//Grid 27
//
//. . 7 | 2 5 6 | 4 . .
//4 . . | . . . | . . 5
//. 1 . | . 3 . | . 6 .
//------+-------+------
//. . . | 5 . 8 | . . .
//. . 8 | . 6 . | 2 . .
//. . . | 1 . 7 | . . .
//------+-------+------
//. 3 . | . 7 . | . 9 .
//2 . . | . . . | . . 4
//. . 6 | 3 1 2 | 7 . .
//
//3 8 7 | 2 5 6 | 4 1 9
//4 6 9 | 7 8 1 | 3 2 5
//5 1 2 | 4 3 9 | 8 6 7
//------+-------+------
//1 2 3 | 5 4 8 | 9 7 6
//7 5 8 | 9 6 3 | 2 4 1
//6 9 4 | 1 2 7 | 5 8 3
//------+-------+------
//8 3 5 | 6 7 4 | 1 9 2
//2 7 1 | 8 9 5 | 6 3 4
//9 4 6 | 3 1 2 | 7 5 8
//
//
//
//Grid 28
//
//. . . | . . . | . . .
//. 7 9 | . 5 . | 1 8 .
//8 . . | . . . | . . 7
//------+-------+------
//. . 7 | 3 . 6 | 8 . .
//4 5 . | 7 . 8 | . 9 6
//. . 3 | 5 . 2 | 7 . .
//------+-------+------
//7 . . | . . . | . . 5
//. 1 6 | . 3 . | 4 2 .
//. . . | . . . | . . .
//
//3 4 5 | 8 7 1 | 2 6 9
//2 7 9 | 6 5 3 | 1 8 4
//8 6 1 | 4 2 9 | 5 3 7
//------+-------+------
//1 9 7 | 3 4 6 | 8 5 2
//4 5 2 | 7 1 8 | 3 9 6
//6 8 3 | 5 9 2 | 7 4 1
//------+-------+------
//7 3 8 | 2 6 4 | 9 1 5
//5 1 6 | 9 3 7 | 4 2 8
//9 2 4 | 1 8 5 | 6 7 3
//
//
//
//Grid 29
//
//. 3 . | . . . | . 8 .
//. . 9 | . . . | 5 . .
//. . 7 | 5 . 9 | 2 . .
//------+-------+------
//7 . . | 1 . 5 | . . 8
//. 2 . | . 9 . | . 3 .
//9 . . | 4 . 2 | . . 1
//------+-------+------
//. . 4 | 2 . 7 | 1 . .
//. . 2 | . . . | 8 . .
//. 7 . | . . . | . 9 .
//
//2 3 5 | 7 6 1 | 4 8 9
//4 1 9 | 3 2 8 | 5 7 6
//8 6 7 | 5 4 9 | 2 1 3
//------+-------+------
//7 4 6 | 1 3 5 | 9 2 8
//5 2 1 | 8 9 6 | 7 3 4
//9 8 3 | 4 7 2 | 6 5 1
//------+-------+------
//3 9 4 | 2 8 7 | 1 6 5
//6 5 2 | 9 1 3 | 8 4 7
//1 7 8 | 6 5 4 | 3 9 2
//
//
//
//Grid 30
//
//2 . . | 1 7 . | 6 . 3
//. 5 . | . . . | 1 . .
//. . . | . . 6 | . 7 9
//------+-------+------
//. . . | . 4 . | 7 . .
//. . . | 8 . 1 | . . .
//. . 9 | . 5 . | . . .
//------+-------+------
//3 1 . | 4 . . | . . .
//. . 5 | . . . | . 6 .
//9 . 6 | . 3 7 | . . 2
//
//2 9 8 | 1 7 5 | 6 4 3
//6 5 7 | 3 9 4 | 1 2 8
//1 3 4 | 2 8 6 | 5 7 9
//------+-------+------
//8 2 1 | 6 4 9 | 7 3 5
//5 7 3 | 8 2 1 | 4 9 6
//4 6 9 | 7 5 3 | 2 8 1
//------+-------+------
//3 1 2 | 4 6 8 | 9 5 7
//7 8 5 | 9 1 2 | 3 6 4
//9 4 6 | 5 3 7 | 8 1 2
//
//
//
//Grid 31
//
//. . . | . . . | . 8 .
//8 . . | 7 . 1 | . 4 .
//. 4 . | . 2 . | . 3 .
//------+-------+------
//3 7 4 | . . . | 9 . .
//. . . | . 3 . | . . .
//. . 5 | . . . | 3 2 1
//------+-------+------
//. 1 . | . 6 . | . 5 .
//. 5 . | 8 . 2 | . . 6
//. 8 . | . . . | . . .
//
//7 6 1 | 5 4 3 | 2 8 9
//8 3 2 | 7 9 1 | 6 4 5
//5 4 9 | 6 2 8 | 1 3 7
//------+-------+------
//3 7 4 | 2 1 5 | 9 6 8
//1 2 8 | 9 3 6 | 5 7 4
//6 9 5 | 4 8 7 | 3 2 1
//------+-------+------
//4 1 7 | 3 6 9 | 8 5 2
//9 5 3 | 8 7 2 | 4 1 6
//2 8 6 | 1 5 4 | 7 9 3
//
//
//
//Grid 32
//
//. . . | . . . | . 8 5
//. . . | 2 1 . | . . 9
//9 6 . | . 8 . | 1 . .
//------+-------+------
//5 . . | 8 . . | . 1 6
//. . . | . . . | . . .
//8 9 . | . . 6 | . . 7
//------+-------+------
//. . 9 | . 7 . | . 5 2
//3 . . | . 5 4 | . . .
//4 8 . | . . . | . . .
//
//1 3 2 | 6 4 9 | 7 8 5
//7 5 8 | 2 1 3 | 6 4 9
//9 6 4 | 7 8 5 | 1 2 3
//------+-------+------
//5 4 3 | 8 9 7 | 2 1 6
//2 7 6 | 5 3 1 | 8 9 4
//8 9 1 | 4 2 6 | 5 3 7
//------+-------+------
//6 1 9 | 3 7 8 | 4 5 2
//3 2 7 | 1 5 4 | 9 6 8
//4 8 5 | 9 6 2 | 3 7 1
//
//
//
//Grid 33
//
//6 . 8 | . 7 . | 5 . 2
//. 5 . | 6 . 8 | . 7 .
//. . 2 | . . . | 3 . .
//------+-------+------
//5 . . | . 9 . | . . 6
//. 4 . | 3 . 2 | . 5 .
//8 . . | . 5 . | . . 3
//------+-------+------
//. . 5 | . . . | 2 . .
//. 1 . | 7 . 4 | . 9 .
//4 . 9 | . 6 . | 7 . 1
//
//6 9 8 | 1 7 3 | 5 4 2
//3 5 4 | 6 2 8 | 1 7 9
//1 7 2 | 5 4 9 | 3 6 8
//------+-------+------
//5 3 1 | 8 9 7 | 4 2 6
//9 4 6 | 3 1 2 | 8 5 7
//8 2 7 | 4 5 6 | 9 1 3
//------+-------+------
//7 6 5 | 9 3 1 | 2 8 4
//2 1 3 | 7 8 4 | 6 9 5
//4 8 9 | 2 6 5 | 7 3 1
//
//
//
//Grid 34
//
//. 5 . | . 1 . | . 4 .
//1 . 7 | . . . | 6 . 2
//. . . | 9 . 5 | . . .
//------+-------+------
//2 . 8 | . 3 . | 5 . 1
//. 4 . | . 7 . | . 2 .
//9 . 1 | . 8 . | 4 . 6
//------+-------+------
//. . . | 4 . 1 | . . .
//3 . 4 | . . . | 7 . 9
//. 2 . | . 6 . | . 1 .
//
//8 5 2 | 7 1 6 | 9 4 3
//1 9 7 | 8 4 3 | 6 5 2
//4 6 3 | 9 2 5 | 1 8 7
//------+-------+------
//2 7 8 | 6 3 4 | 5 9 1
//6 4 5 | 1 7 9 | 3 2 8
//9 3 1 | 5 8 2 | 4 7 6
//------+-------+------
//7 8 6 | 4 9 1 | 2 3 5
//3 1 4 | 2 5 8 | 7 6 9
//5 2 9 | 3 6 7 | 8 1 4
//
//
//
//Grid 35
//
//. 5 3 | . . . | 7 9 .
//. . 9 | 7 5 3 | 4 . .
//1 . . | . . . | . . 2
//------+-------+------
//. 9 . | . 8 . | . 1 .
//. . . | 9 . 7 | . . .
//. 8 . | . 3 . | . 7 .
//------+-------+------
//5 . . | . . . | . . 3
//. . 7 | 6 4 1 | 2 . .
//. 6 1 | . . . | 9 4 .
//
//4 5 3 | 2 1 8 | 7 9 6
//6 2 9 | 7 5 3 | 4 8 1
//1 7 8 | 4 9 6 | 5 3 2
//------+-------+------
//7 9 6 | 5 8 2 | 3 1 4
//3 1 4 | 9 6 7 | 8 2 5
//2 8 5 | 1 3 4 | 6 7 9
//------+-------+------
//5 4 2 | 8 7 9 | 1 6 3
//9 3 7 | 6 4 1 | 2 5 8
//8 6 1 | 3 2 5 | 9 4 7
//
//
//
//Grid 36
//
//. . 6 | . 8 . | 3 . .
//. 4 9 | . 7 . | 2 5 .
//. . . | 4 . 5 | . . .
//------+-------+------
//6 . . | 3 1 7 | . . 4
//. . 7 | . . . | 8 . .
//1 . . | 8 2 6 | . . 9
//------+-------+------
//. . . | 7 . 2 | . . .
//. 7 5 | . 4 . | 1 9 .
//. . 3 | . 9 . | 6 . .
//
//5 1 6 | 2 8 9 | 3 4 7
//8 4 9 | 1 7 3 | 2 5 6
//7 3 2 | 4 6 5 | 9 1 8
//------+-------+------
//6 9 8 | 3 1 7 | 5 2 4
//3 2 7 | 9 5 4 | 8 6 1
//1 5 4 | 8 2 6 | 7 3 9
//------+-------+------
//9 6 1 | 7 3 2 | 4 8 5
//2 7 5 | 6 4 8 | 1 9 3
//4 8 3 | 5 9 1 | 6 7 2
//
//
//
//Grid 37
//
//. . 5 | . 8 . | 7 . .
//7 . . | 2 . 4 | . . 5
//3 2 . | . . . | . 8 4
//------+-------+------
//. 6 . | 1 . 5 | . 4 .
//. . 8 | . . . | 5 . .
//. 7 . | 8 . 3 | . 1 .
//------+-------+------
//4 5 . | . . . | . 9 1
//6 . . | 5 . 8 | . . 7
//. . 3 | . 1 . | 6 . .
//
//9 4 5 | 6 8 1 | 7 2 3
//7 8 1 | 2 3 4 | 9 6 5
//3 2 6 | 7 5 9 | 1 8 4
//------+-------+------
//2 6 9 | 1 7 5 | 3 4 8
//1 3 8 | 9 4 2 | 5 7 6
//5 7 4 | 8 6 3 | 2 1 9
//------+-------+------
//4 5 7 | 3 2 6 | 8 9 1
//6 1 2 | 5 9 8 | 4 3 7
//8 9 3 | 4 1 7 | 6 5 2
//
//
//
//Grid 38
//
//. . . | 9 . . | 8 . .
//1 2 8 | . . 6 | 4 . .
//. 7 . | 8 . . | . 6 .
//------+-------+------
//8 . . | 4 3 . | . . 7
//5 . . | . . . | . . 9
//6 . . | . 7 9 | . . 8
//------+-------+------
//. 9 . | . . 4 | . 1 .
//. . 3 | 6 . . | 2 8 4
//. . 1 | . . 7 | . . .
//
//3 6 5 | 9 4 2 | 8 7 1
//1 2 8 | 7 5 6 | 4 9 3
//9 7 4 | 8 1 3 | 5 6 2
//------+-------+------
//8 1 9 | 4 3 5 | 6 2 7
//5 3 7 | 2 6 8 | 1 4 9
//6 4 2 | 1 7 9 | 3 5 8
//------+-------+------
//2 9 6 | 3 8 4 | 7 1 5
//7 5 3 | 6 9 1 | 2 8 4
//4 8 1 | 5 2 7 | 9 3 6
//
//
//
//Grid 39
//
//. . . | . 8 . | . . .
//2 7 . | . . . | . 5 4
//. 9 5 | . . . | 8 1 .
//------+-------+------
//. . 9 | 8 . 6 | 4 . .
//. 2 . | 4 . 3 | . 6 .
//. . 6 | 9 . 5 | 1 . .
//------+-------+------
//. 1 7 | . . . | 6 2 .
//4 6 . | . . . | . 3 8
//. . . | . 9 . | . . .
//
//1 3 4 | 5 8 7 | 2 9 6
//2 7 8 | 1 6 9 | 3 5 4
//6 9 5 | 2 3 4 | 8 1 7
//------+-------+------
//3 5 9 | 8 1 6 | 4 7 2
//8 2 1 | 4 7 3 | 5 6 9
//7 4 6 | 9 2 5 | 1 8 3
//------+-------+------
//9 1 7 | 3 4 8 | 6 2 5
//4 6 2 | 7 5 1 | 9 3 8
//5 8 3 | 6 9 2 | 7 4 1
//
//
//
//Grid 40
//
//. . . | 6 . 2 | . . .
//4 . . | . 5 . | . . 1
//. 8 5 | . 1 . | 6 2 .
//------+-------+------
//. 3 8 | 2 . 6 | 7 1 .
//. . . | . . . | . . .
//. 1 9 | 4 . 7 | 3 5 .
//------+-------+------
//. 2 6 | . 4 . | 5 3 .
//9 . . | . 2 . | . . 7
//. . . | 8 . 9 | . . .
//
//1 9 3 | 6 7 2 | 4 8 5
//4 6 2 | 3 5 8 | 9 7 1
//7 8 5 | 9 1 4 | 6 2 3
//------+-------+------
//5 3 8 | 2 9 6 | 7 1 4
//6 7 4 | 1 3 5 | 2 9 8
//2 1 9 | 4 8 7 | 3 5 6
//------+-------+------
//8 2 6 | 7 4 1 | 5 3 9
//9 4 1 | 5 2 3 | 8 6 7
//3 5 7 | 8 6 9 | 1 4 2
//
//
//
//Grid 41
//
//. . . | 9 . . | . . 2
//. 5 . | 1 2 3 | 4 . .
//. 3 . | . . . | 1 6 .
//------+-------+------
//9 . 8 | . . . | . . .
//. 7 . | . . . | . 9 .
//. . . | . . . | 2 . 5
//------+-------+------
//. 9 1 | . . . | . 5 .
//. . 7 | 4 3 9 | . 2 .
//4 . . | . . 7 | . . .
//
//8 1 4 | 9 7 6 | 5 3 2
//6 5 9 | 1 2 3 | 4 7 8
//7 3 2 | 8 5 4 | 1 6 9
//------+-------+------
//9 4 8 | 2 6 5 | 3 1 7
//2 7 5 | 3 4 1 | 8 9 6
//1 6 3 | 7 9 8 | 2 4 5
//------+-------+------
//3 9 1 | 6 8 2 | 7 5 4
//5 8 7 | 4 3 9 | 6 2 1
//4 2 6 | 5 1 7 | 9 8 3
//
//
//
//Grid 42
//
//3 8 . | . . . | . . .
//. . . | 4 . . | 7 8 5
//. . 9 | . 2 . | 3 . .
//------+-------+------
//. 6 . | . 9 . | . . .
//8 . . | 3 . 2 | . . 9
//. . . | . 4 . | . 7 .
//------+-------+------
//. . 1 | . 7 . | 5 . .
//4 9 5 | . . 6 | . . .
//. . . | . . . | . 9 2
//
//3 8 4 | 5 6 7 | 9 2 1
//1 2 6 | 4 3 9 | 7 8 5
//7 5 9 | 8 2 1 | 3 4 6
//------+-------+------
//5 6 3 | 7 9 8 | 2 1 4
//8 4 7 | 3 1 2 | 6 5 9
//9 1 2 | 6 4 5 | 8 7 3
//------+-------+------
//2 3 1 | 9 7 4 | 5 6 8
//4 9 5 | 2 8 6 | 1 3 7
//6 7 8 | 1 5 3 | 4 9 2
//
//
//
//Grid 43
//
//. . . | 1 5 8 | . . .
//. . 2 | . 6 . | 8 . .
//. 3 . | . . . | . 4 .
//------+-------+------
//. 2 7 | . 3 . | 5 1 .
//. . . | . . . | . . .
//. 4 6 | . 8 . | 7 9 .
//------+-------+------
//. 5 . | . . . | . 8 .
//. . 4 | . 7 . | 1 . .
//. . . | 3 2 5 | . . .
//
//4 6 9 | 1 5 8 | 3 7 2
//7 1 2 | 4 6 3 | 8 5 9
//5 3 8 | 2 9 7 | 6 4 1
//------+-------+------
//9 2 7 | 6 3 4 | 5 1 8
//3 8 5 | 7 1 9 | 4 2 6
//1 4 6 | 5 8 2 | 7 9 3
//------+-------+------
//6 5 3 | 9 4 1 | 2 8 7
//2 9 4 | 8 7 6 | 1 3 5
//8 7 1 | 3 2 5 | 9 6 4
//
//
//
//Grid 44
//
//. 1 . | 5 . . | 2 . .
//9 . . | . . 1 | . . .
//. . 2 | . . 8 | . 3 .
//------+-------+------
//5 . . | . 3 . | . . 7
//. . 8 | . . . | 5 . .
//6 . . | . 8 . | . . 4
//------+-------+------
//. 4 . | 1 . . | 7 . .
//. . . | 7 . . | . . 6
//. . 3 | . . 4 | . 5 .
//
//3 1 6 | 5 4 9 | 2 7 8
//9 8 7 | 3 2 1 | 6 4 5
//4 5 2 | 6 7 8 | 9 3 1
//------+-------+------
//5 9 4 | 2 3 6 | 8 1 7
//2 3 8 | 4 1 7 | 5 6 9
//6 7 1 | 9 8 5 | 3 2 4
//------+-------+------
//8 4 5 | 1 6 2 | 7 9 3
//1 2 9 | 7 5 3 | 4 8 6
//7 6 3 | 8 9 4 | 1 5 2
//
//
//
//Grid 45
//
//. 8 . | . . . | . 4 .
//. . . | 4 6 9 | . . .
//4 . . | . . . | . . 7
//------+-------+------
//. . 5 | 9 . 4 | 6 . .
//. 7 . | 6 . 8 | . 3 .
//. . 8 | 5 . 2 | 1 . .
//------+-------+------
//9 . . | . . . | . . 5
//. . . | 7 8 1 | . . .
//. 6 . | . . . | . 1 .
//
//5 8 6 | 1 2 7 | 9 4 3
//7 2 3 | 4 6 9 | 8 5 1
//4 9 1 | 8 5 3 | 2 6 7
//------+-------+------
//1 3 5 | 9 7 4 | 6 2 8
//2 7 9 | 6 1 8 | 5 3 4
//6 4 8 | 5 3 2 | 1 7 9
//------+-------+------
//9 1 7 | 2 4 6 | 3 8 5
//3 5 2 | 7 8 1 | 4 9 6
//8 6 4 | 3 9 5 | 7 1 2
//
//
//
//Grid 46
//
//9 . 4 | 2 . . | . . 7
//. 1 . | . . . | . . .
//. . . | 7 . 6 | 5 . .
//------+-------+------
//. . . | 8 . . | . 9 .
//. 2 . | 9 . 4 | . 6 .
//. 4 . | . . 2 | . . .
//------+-------+------
//. . 1 | 6 . 7 | . . .
//. . . | . . . | . 3 .
//3 . . | . . 5 | 7 . 2
//
//9 5 4 | 2 1 3 | 6 8 7
//6 1 7 | 5 4 8 | 9 2 3
//8 3 2 | 7 9 6 | 5 4 1
//------+-------+------
//7 6 3 | 8 5 1 | 2 9 4
//1 2 8 | 9 7 4 | 3 6 5
//5 4 9 | 3 6 2 | 1 7 8
//------+-------+------
//2 8 1 | 6 3 7 | 4 5 9
//4 7 5 | 1 2 9 | 8 3 6
//3 9 6 | 4 8 5 | 7 1 2
//
//
//
//Grid 47
//
//. . . | 7 . . | 8 . .
//. . 6 | . . . | . 3 1
//. 4 . | . . 2 | . . .
//------+-------+------
//. 2 4 | . 7 . | . . .
//. 1 . | . 3 . | . 8 .
//. . . | . 6 . | 2 9 .
//------+-------+------
//. . . | 8 . . | . 7 .
//8 6 . | . . . | 5 . .
//. . 2 | . . 6 | . . .
//
//1 5 9 | 7 4 3 | 8 6 2
//2 7 6 | 5 8 9 | 4 3 1
//3 4 8 | 6 1 2 | 7 5 9
//------+-------+------
//6 2 4 | 9 7 8 | 3 1 5
//9 1 7 | 2 3 5 | 6 8 4
//5 8 3 | 1 6 4 | 2 9 7
//------+-------+------
//4 3 5 | 8 2 1 | 9 7 6
//8 6 1 | 4 9 7 | 5 2 3
//7 9 2 | 3 5 6 | 1 4 8
//
//
//
//Grid 48
//
//. . 1 | . . 7 | . 9 .
//5 9 . | . 8 . | . . 1
//. 3 . | . . . | . 8 .
//------+-------+------
//. . . | . . 5 | 8 . .
//. 5 . | . 6 . | . 2 .
//. . 4 | 1 . . | . . .
//------+-------+------
//. 8 . | . . . | . 3 .
//1 . . | . 2 . | . 7 9
//. 2 . | 7 . . | 4 . .
//
//8 6 1 | 3 5 7 | 2 9 4
//5 9 7 | 4 8 2 | 3 6 1
//4 3 2 | 6 1 9 | 7 8 5
//------+-------+------
//9 1 6 | 2 7 5 | 8 4 3
//3 5 8 | 9 6 4 | 1 2 7
//2 7 4 | 1 3 8 | 9 5 6
//------+-------+------
//7 8 9 | 5 4 1 | 6 3 2
//1 4 3 | 8 2 6 | 5 7 9
//6 2 5 | 7 9 3 | 4 1 8
//
//
//
//Grid 49
//
//. . . | . . 3 | . 1 7
//. 1 5 | . . 9 | . . 8
//. 6 . | . . . | . . .
//------+-------+------
//1 . . | . . 7 | . . .
//. . 9 | . . . | 2 . .
//. . . | 5 . . | . . 4
//------+-------+------
//. . . | . . . | . 2 .
//5 . . | 6 . . | 3 4 .
//3 4 . | 2 . . | . . .
//
//2 9 4 | 8 6 3 | 5 1 7
//7 1 5 | 4 2 9 | 6 3 8
//8 6 3 | 7 5 1 | 4 9 2
//------+-------+------
//1 5 2 | 9 4 7 | 8 6 3
//4 7 9 | 3 8 6 | 2 5 1
//6 3 8 | 5 1 2 | 9 7 4
//------+-------+------
//9 8 6 | 1 3 4 | 7 2 5
//5 2 1 | 6 7 8 | 3 4 9
//3 4 7 | 2 9 5 | 1 8 6
//
//
//
//Grid 50
//
//3 . . | 2 . . | . . .
//. . . | 1 . 7 | . . .
//7 . 6 | . 3 . | 5 . .
//------+-------+------
//. 7 . | . . 9 | . 8 .
//9 . . | . 2 . | . . 4
//. 1 . | 8 . . | . 5 .
//------+-------+------
//. . 9 | . 4 . | 3 . 1
//. . . | 7 . 2 | . . .
//. . . | . . 8 | . . 6
//
//3 5 1 | 2 8 6 | 4 9 7
//4 9 2 | 1 5 7 | 6 3 8
//7 8 6 | 9 3 4 | 5 1 2
//------+-------+------
//2 7 5 | 4 6 9 | 1 8 3
//9 3 8 | 5 2 1 | 7 6 4
//6 1 4 | 8 7 3 | 2 5 9
//------+-------+------
//8 2 9 | 6 4 5 | 3 7 1
//1 6 3 | 7 9 2 | 8 4 5
//5 4 7 | 3 1 8 | 9 2 6
//
//sum: 24702
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment