Below is a Brute Force sudoku solver in PHP, finds all solutions.
<?php
parse_str($argv[1], $arg);//command line
$dataO = $arg["data"]; //$_GET["data"]; //web
if(!isset($dataO)) die("No data given");
$dataSpl=str_split($dataO);
$grid = [];
$idx = 0;
for ($r = 0; $r < 9; $r++) {
$grid[$r]=[];
for ($c = 0; $c < 9; $c++) {
$grid[$r][$c]=$dataSpl[$idx];
$idx++;
}
}
function joingrd($g){
return join("",$g);
}
function fits($grid,$rp,$cp,$nr){
if(in_array($nr,$grid[$rp])) return false;
for ($r = 0; $r < 9; $r++) {
if($r==$rp) continue;
if($grid[$r][$cp]==$nr) return false;
}
$rb = floor($rp/3) *3;
$cb = floor($cp/3) *3;
for($i=$rb;$i<$rb+3;$i++){
for($j=$cb;$j<$cb+3;$j++){
if($grid[$i] && $grid[$i][$j]==$nr) return false;
}
}
return true;
}
function solve($grid){
for ($r = 0; $r < 9; $r++) {
for ($c = 0; $c < 9; $c++) {
if($grid[$r][$c]>0){
continue;
}
for($n=1;$n<10;$n++){
if(fits($grid,$r,$c,$n)){
$grid[$r][$c]=$n;
solve($grid);
$grid[$r][$c]=0;
}
}
return;
}
}
echo join("",array_map("joingrd",$grid))."\n";
}
solve($grid);
?>
This is a Command line script.
php solve.php data=040000508000005007598000142020700800004200006000500000900020010002059003801000000
pause
The example sudoku is not unique.