Jump to content

Sudoku: Difference between revisions

m
→‎Functional Recursive Backtrack Solution: Used standard sudoku string format
m (→‎“Manual” Solution: Better solution name)
m (→‎Functional Recursive Backtrack Solution: Used standard sudoku string format)
Line 1,834:
using System.Collections.Generic;
using System;
using System.IO;
 
namespace Sudoku {
Line 1,851 ⟶ 1,852:
GetBox(grid, row, col).IsUnequal();
 
private static (int, int)bool NextEmptyCellSolve(this int[][] grid, int r, int c) =>{
rif < 9 && grid[(r][c] !== 09)
? NextEmptyCell(grid, c == 8 ? r + 1 : r, ++c % 9)
: (r, c);
 
private static bool Solve(this int[][] grid, int row, int col) {
var (r, c) = grid.NextEmptyCell(row, col);
if (r == 9) //finished
return true;
 
if (grid[r][c] =!= 90) //finished
? NextEmptyCell(grid, return grid.Solve(c == 8 ? r + 1 : r, ++c % 9);
foreach (var i in Range(1,9)) {
grid[r][c] = i;
if (grid.Constraints(r, c) && grid.Solve(r, c))
return true;
} grid[r][c] = 0;
grid[r][c]} = 0; //backtrack
return false;
}
 
private static voidint[][] MainParse(string[] argsinput) {=>
var grid = new string[]{input
.Select((c, i) => (index: "970i, 340val: 060",(int)c - '0'))
.SelectGroupBy(rid => rid.Where(c => c !=index '/ '9).Select(cgrp => grp.Select(int)cid -=> '0'id.val).ToArray())
"861 750 000",
"324 168 957",.ToArray();
"219 584 673",
"487 236 519",
"653 971 284",
"738 425 196",
"002 010 048",
"040 007 300" }
.Select(r => r.Where(c => c != ' ').Select(c => (int)c - '0').ToArray())
.ToArray();
 
static void Main(string[] args) {
//https://staffhome.ecm.uwa.edu.au/~00013890/sudoku17 format
var puzzle = "000028000800010000000000700000600403200004000100700000030400500000000010060000000";
var grid = Parse(puzzle);
: (r, c);
Write(grid.Solve(0, 0)
? string.Join('\n', grid.Select(row=>string.Concat(row)))
Line 1,892 ⟶ 1,888:
</lang>
Output
<pre>975342861
617328945
861759432
894517236
324168957
325946781
219584673
978651423
487236519
256834179
653971284
143792658
738425196
731489562
592613748
489265317
146897325
562173894</pre>
 
===“Automatic” Solution===
Cookies help us deliver our services. By using our services, you agree to our use of cookies.