Sudoku: Difference between revisions
Content added Content deleted
m (→Functional Recursive Backtrack Solution: Formatting) |
m (→Functional Recursive Backtrack Solution: Code change: turned print into a 1 liner) |
||
Line 1,857: | Line 1,857: | ||
private static bool Solve(this int[][] grid, int row, int col) { |
private static bool Solve(this int[][] grid, int row, int col) { |
||
var (r, c) = grid.NextEmptyCell(row, col); |
var (r, c) = grid.NextEmptyCell(row, col); |
||
if (r == 9) // |
if (r == 9) //finished |
||
return true; |
return true; |
||
foreach (var i in Range(1,9)) { |
foreach (var i in Range(1,9)) { |
||
Line 1,867: | Line 1,867: | ||
return false; |
return false; |
||
} |
} |
||
private static U Fwd<T, U>(this T t, Func<T, U> func) => func(t); |
|||
static void Main(string[] args) { |
static void Main(string[] args) { |
||
Line 1,884: | Line 1,882: | ||
.ToArray(); |
.ToArray(); |
||
Write(grid.Solve(0, 0) |
|||
? string.Join('\n', grid.Select(row=>string.Concat(row))) |
|||
: "No Solution"); |
|||
⚫ | |||
.Select(r => Range(0, 9).Select(c => grid[r][c]).Fwd(string.Concat)) |
|||
.Fwd(s => string.Join('\n', s)), |
|||
_ => |
|||
"No Solution\n" |
|||
⚫ | |||
Write(report); |
|||
ReadLine(); |
|||
} |
} |
||
} |
} |
||
} |
|||
</lang> |
|||
Output |
Output |
||
<pre>975342861 |
<pre>975342861 |