resolve all

master
gnieark 9 years ago
parent 798c4f0cbd
commit d3857b17a5

@ -1,6 +1,6 @@
<?php <?php
//separer les map //separer les map
$grids=explode("\n",str_replace(array("+-----------------+\n","|"),"",file_get_contents("easy.txt"))); $grids=explode("\n",str_replace(array("+-----------------+\n","|"),"",file_get_contents("easy.txt")."\n".file_get_contents("medium.txt")."\n".file_get_contents("hard.txt")));
$grid=array(); $grid=array();
foreach($grids as $gridLine){ foreach($grids as $gridLine){
$lineArray=array(); $lineArray=array();
@ -9,20 +9,25 @@ foreach($grids as $gridLine){
} }
$grid[]=$lineArray; $grid[]=$lineArray;
if(count($grid)==9){ if(count($grid)==9){
//viewGrid($grid);
viewGrid(resolveSudoku($grid)); viewGrid(resolveSudoku($grid));
$grid=array(); $grid=array();
} }
} }
function resolveSudokuByBruteforce($grille){ function resolveSudokuByBruteforce($grille){
$possib=array();
//se placer sur la première case non remplie //se placer sur la première case non remplie
for ($y=0;$y<9;$y++){ $x=0;
for($x=0;$x<9;$x++){ $y=0;
if($grille[$y][$x]==" "){ for($i=0; (($grille[$y][$x]<>" ")&&($i<81));$i++){
//$possib[$x."-".$y]=array(); $y=(int)($i/9);
$x=fmod($i,9);
}
if(($i==81)&&($grille[8][8]<>" ")){
//la grille est déjà pleine
return $grille;
}
//enregistrer toutes les possibilités sur cette case //enregistrer toutes les possibilités sur cette case
$canPlay=false; $canPlay=false;
for($k=1;$k<10;$k++){ for($k=1;$k<10;$k++){
@ -41,23 +46,14 @@ function resolveSudokuByBruteforce($grille){
} }
if(!$canPlay){ if(!$canPlay){
// echo "CAN'T:".$x." ".$y."\n";
//viewGrid($grille);
return false; return false;
} }
}
} }
}
/*
if(count($possib==1)){
//y a qu'une case à jouer
list($x,$y)=explode("-",array_keys($possib)[0]);
$grilleTemp[$y][$x]=$possib[$x."-".$y][0];
return $grilleTemp;
}
*/
}
function resolveSudoku($grille){ function resolveSudoku($grille){
@ -78,6 +74,7 @@ function resolveSudoku($grille){
if($grid=resolveSudokuByBruteforce($grille)){ if($grid=resolveSudokuByBruteforce($grille)){
return $grid; return $grid;
}else{ }else{
return $grille; return $grille;
} }
} }

Loading…
Cancel
Save