From 0cda4d630ef00b7966db067dda3f64da1c0233e4 Mon Sep 17 00:00:00 2001 From: gnieark Date: Wed, 18 Nov 2015 00:18:38 +0100 Subject: [PATCH] . --- easy.txt | 220 ++++++++++++++++++++++++++++++++++++++++++++++++++++ gnieark.php | 172 ++++++++++++++++++++++++++++++++++++++++ hard.txt | 220 ++++++++++++++++++++++++++++++++++++++++++++++++++++ medium.txt | 220 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 832 insertions(+) create mode 100755 easy.txt create mode 100644 gnieark.php create mode 100755 hard.txt create mode 100755 medium.txt diff --git a/easy.txt b/easy.txt new file mode 100755 index 0000000..79d364c --- /dev/null +++ b/easy.txt @@ -0,0 +1,220 @@ ++-----------------+ +|7 4 5 | +| 2 3 7 8 6| +| 9 5 7| +|4 7 | +|9 3| +| 3 2| +|1 5 9 | +|2 1 4 7 9 | +| 2 1 4| ++-----------------+ ++-----------------+ +| 6 9 | +| 2 3| +| 6 2 9 3 5 1 | +| 1 | +| 1 5 3 8 7 4| +|5 2 3 4 6 8 9 | +| 5 6 | +|6 3 8 2 4 | +|8 4 7 | ++-----------------+ ++-----------------+ +|1 5| +| 5 9 1 | +|6 3 2 5 7 4| +| 4 8 2 | +|7 8| +| 1 7 3 | +|3 1 8 6 2 7| +| 7 3 5 | +|8 3| ++-----------------+ ++-----------------+ +| 4 2 5 7| +| 9 5 1 | +|3 7 6 8| +|6 4 2| +|1 8 7 4| +|5 2 3| +| 2 9 1| +| 1 5 7 | +|2 8 1 3 | ++-----------------+ ++-----------------+ +| 7 6 2 4 | +| 4 6 9 | +|9 2 8 5 | +|8 2 9 | +| 3 4 | +| 4 9 6| +| 7 3 2 4| +| 5 8 6 | +| 3 2 6 7 | ++-----------------+ ++-----------------+ +|6 7 3 9| +| 5 9 3 4| +| 3 7 | +| 1| +|9 7 5 4 2 | +| 7 6| +| 9 1 4 | +| 8 2 | +|2 1 5 9 8| ++-----------------+ ++-----------------+ +| 6 1 4 5 | +| 8 3 5 6 | +|2 1| +|8 4 7 6| +| 6 3 | +|7 9 1 4| +|5 2| +| 7 2 6 9 | +| 4 5 8 7 | ++-----------------+ ++-----------------+ +| 6 4 5 | +| 8 | +|7 2 3 9 | +|5 8 6 | +|3 7| +| 9 2 1| +| 1 6 3 8| +| 5 | +| 4 2 9 | ++-----------------+ ++-----------------+ +| 4 5| +| 7 9 6 | +|4 2 1 | +| 2 6| +|1 8 2 3| +|9 5 | +| 2 7 1| +| 6 5 8 | +|3 1 | ++-----------------+ ++-----------------+ +| 5 7 8 2 | +|4 6| +| 7 6 8 | +|5 2 9 4 3 1| +| | +|8 6 1 7 5 4| +| 9 3 6 | +|7 5| +| 2 4 6 1 | ++-----------------+ ++-----------------+ +|5 2 8| +| 4 1 5 6| +| 9 | +|2 8 3 9| +| | +|6 7 4 3| +| 2 | +|4 1 7 3 | +|9 6 5| ++-----------------+ ++-----------------+ +|9 6 7 | +| 1 4 6 | +|4 8 5 | +| 7 2 1| +|6 5 1 8 9 3| +|3 1 4 | +| 9 5 2| +| 6 3 1 | +| 8 6 7| ++-----------------+ ++-----------------+ +| 2 5 | +| 5 6 | +|6 8 2 7 5 3| +| 5 3 6 9 | +|9 6| +| 1 9 7 5 | +|1 2 8 6 7 4| +| 9 2 | +| 4 1 | ++-----------------+ ++-----------------+ +|5 4 2 | +| 7 2 | +| 6 8 9| +| 2 7 9 6 | +|8 2 5| +| 6 3 5 1 | +|7 1 5 | +| 6 5 | +| 8 1 3| ++-----------------+ ++-----------------+ +|8 5 4 2| +|4 2 9 | +| 8 7 | +| 6 1| +| 4 8 3 | +|2 5 | +| 3 4 7 | +| 8 7 9 6| +|6 1 4 7| ++-----------------+ ++-----------------+ +| 1 2 3 | +|6 5 8 9 3 | +| 7 8 9 | +|7 2 5 4 | +| 1 5 3 4 9 6 7| +| 8 5| +|5 4 1 7 | +|1 3 9 2 5 | +|8 | ++-----------------+ ++-----------------+ +|1 4 3 9 | +| 2 9 1 | +|9 2 8 7| +| 1 9 3 6| +| | +|5 6 2 7 | +|7 8 9 5| +| 9 5 4 | +| 5 6 2 9| ++-----------------+ ++-----------------+ +|2 1 9 | +|6 5 8 4 1| +| 3 5 | +| 1 7 | +| 2 4 3 5 1 8 | +| 7 2 | +| 6 5 | +|7 9 2 4 5| +| 7 4 2| ++-----------------+ ++-----------------+ +| 3 5 6 7 8| +|8 9 6 | +| 4 7 8 | +| 5 4 3 1| +|1 6 5 7| +|3 1 2 9 | +| 8 4 5 | +| 3 6 9| +| 4 9 5 8 | ++-----------------+ ++-----------------+ +| 1 6 | +| 9 2 8| +|7 5 | +|5 3 6 | +|3 4 8 7| +| 4 7 9| +| 3 4| +|4 1 2 | +| 9 5 | ++-----------------+ diff --git a/gnieark.php b/gnieark.php new file mode 100644 index 0000000..dc24c85 --- /dev/null +++ b/gnieark.php @@ -0,0 +1,172 @@ +0){ + // echo $numberOfFreeCases."\n"; + //toutes les cases + for ($y=0;$y<9;$y++){ + for($x=0;$x<9;$x++){ + //si la case est vide + if($grille[$y][$x]==" "){ + $numbersAvailable=array(); + for($k=1;$k<10;$k++){ + if (canBePlaced($k,$x,$y,$grille)){ + $numbersAvailable[]=$k; + } + } + if(count($numbersAvailable)==1){ + //only 1 number can be placed there + $grille[$y][$x]=$numbersAvailable[0]; + $numberOfFreeCases--; + }else{ + //tester si une des valeurs doit etre là dans le sens où elle ne peut pas etre + // placée ailleurs dans son petit carré, sa ligne ou sa colonne + + $listsOfFreeCasesSame=listFreeCasesNearMe($x,$y,$grille); + foreach ($listsOfFreeCasesSame as $freeCasesSame){ + foreach ($numbersAvailable as $number){ + $cantPlace=true; + foreach($freeCasesSame as $case){ + if(canBePlaced($number,$case['x'],$case['y'],$grille)){ + $cantPlace=false; + break; + } + } + if($cantPlace){ + //on va le placer ici + $grille[$y][$x]= $number; + $numberOfFreeCases--; + break 2; + } + } + } + } + } + } + } + } + return $grille; +} + +function listFreeCasesNearMe($x,$y,$grid){ + //ligne + $freeOnSameLine=array(); + for($i=0;$i<9;$i++){ + if(($grid[$y][$i]==" ") && ($x<>$i)){ + $freeOnSameLine[]=array('x'=>$i,'y'=>$y); + } + } + //colonne + $freeOnSameColumn=array(); + for($i=0;$i<9;$i++){ + if(($grid[$i][$x]==" ") && ($y<>$i)){ + $freeOnSameColumn[]=array('x'=>$x,'y'=>$i); + } + } + //carré 3X3 + if($x<3){ + $xMin=0; + }elseif(($x>2) && ($x<6)){ + $xMin=3; + }else{ + //x>=6 + $xMin=6; + } + + if($y<3){ + $yMin=0; + }elseif(($y>2) && ($y<6)){ + $yMin=3; + }else{ + //y>=6 + $yMin=6; + } + for($k=$yMin;$k<$yMin + 3;$k++){ + for($l=$xMin;$l<$xMin + 3;$l++){ + if($grid[$k][$l]==" "){ + $freeOnSameCarre[]=array('x'=>$l,'y'=>$k); + } + } + } + return array($freeOnSameLine,$freeOnSameColumn,$freeOnSameCarre); +} +function canBePlaced($number,$x,$y,$grid){ + //vis à vis des valeurs sur la ligne + if(in_array($number,$grid[$y])){ + return false; + } + + // vis à vis des valeurs libres sur la colonne + $col=array(); + $valeursPossiblesEnColonnes=array(); + for($k=0;$k<9;$k++){ + if($number==$grid[$k][$x]){ + return false; + } + } + + //valeurs libres petit carré + if($x<3){ + $xMin=0; + }elseif(($x>2) && ($x<6)){ + $xMin=3; + }else{ + //x>=6 + $xMin=6; + } + + if($y<3){ + $yMin=0; + }elseif(($y>2) && ($y<6)){ + $yMin=3; + }else{ + //y>=6 + $yMin=6; + } + + $valeursPossiblesPetitCarre=array(); + $carre=array(); + for($k=$yMin;$k<$yMin + 3;$k++){ + for($l=$xMin;$l<$xMin + 3;$l++){ + if($number==$grid[$k][$l]){ + return false; + } + } + } + return true; +} + +function viewGrid($grid){ + echo "+-----------------+\n"; + foreach($grid as $line){ + echo "|"; + echo implode(" ",$line); + echo "|\n"; + } + echo "+-----------------+\n"; +} \ No newline at end of file diff --git a/hard.txt b/hard.txt new file mode 100755 index 0000000..90811df --- /dev/null +++ b/hard.txt @@ -0,0 +1,220 @@ ++-----------------+ +|1 4 2 | +|9 7 4 8 | +| 8 9 7 3| +| 1 9 | +|6 7| +| 1 2 7 | +|8 3 5 4 | +| 6 1 9 8| +| 2 7 4| ++-----------------+ ++-----------------+ +|1 4 9 | +| 3 7 1 | +|7 8 | +| 1 4 6 2 9 | +| 6 7 | +| 3 5 7 1 8 | +| 5 4| +| 8 3 7 | +| 5 1 8| ++-----------------+ ++-----------------+ +| 4 3 9 | +| 2 5 8 4| +| 1 5 8 | +| 1 8 4 6| +| | +|8 9 7 5 | +| 8 7 5 | +|2 6 3 4 | +| 4 8 5 | ++-----------------+ ++-----------------+ +| 7 6 | +| 5 1 2| +| 1 6 3| +|2 3 9 5 | +|7 2 1 9| +| 9 6 3 1| +|1 8 3 | +|4 3 5 | +| 7 2 | ++-----------------+ ++-----------------+ +| 5 7 9| +| 9 3 6 | +| 6 9 4 5| +| 4 7 1 | +| 6 8 | +| 3 2 5 | +|1 3 4 2 | +| 8 2 9 | +|9 7 1 | ++-----------------+ ++-----------------+ +|1 2 3 | +|7 4 5 9| +| 8 | +| 6 4 5 | +| 4 9 6 5 | +| 7 8 2 | +| 8 | +|8 2 1 7| +| 7 4 3| ++-----------------+ ++-----------------+ +| 6 4 9 | +|2 8 9 6 3| +| 7 1 4| +|4 3 8 | +| 3 2 | +| 4 1 5| +|1 4 5 | +|8 3 9 2 7| +| 9 1 8 | ++-----------------+ ++-----------------+ +|5 4 3 7| +| 7 5 | +| 3 1 | +| 5 8 9 2 | +| 2 9 | +| 5 7 1 2 | +| 8 9 | +| 9 7 | +|6 2 9 4| ++-----------------+ ++-----------------+ +| 9 2 7 | +|7 8 2 | +| 1 7 6| +| 5 9 7| +| 4 3 | +|6 8 1 | +|1 7 6 | +| 5 1 4| +| 9 4 3 | ++-----------------+ ++-----------------+ +| 8 1 7 6 | +| 3 1| +| 6 4 2| +|3 1 | +| 4 5 7 2 1 9 | +| 6 5| +|2 9 5 | +|4 2 | +| 9 1 6 4 | ++-----------------+ ++-----------------+ +| 6 2 | +| 7 | +|4 3 1 6 8| +| 1 7 6 | +|6 4| +| 5 1 3 | +|2 8 5 4 1| +| 7 | +| 9 2 | ++-----------------+ ++-----------------+ +|9 4 3| +| 3 2 1| +|4 2 1 8 7 | +| 2 7 | +| 3 7 | +| 6 9 | +| 9 3 6 1 2| +|3 2 5 | +|1 5 6| ++-----------------+ ++-----------------+ +| | +|8 5 9 2 4 | +| 2 9 8 | +|3 5 6 7 | +|6 4 2 1| +| 7 5 9 6| +| 7 3 2 | +| 2 8 1 5 4| +| | ++-----------------+ ++-----------------+ +|9 7 6 | +| 3 | +|6 8 7 4 | +| 3 8 7 1| +|2 5 4 9| +|1 8 9 2 | +| 2 8 4 3| +| 2 | +| 7 6 4| ++-----------------+ ++-----------------+ +| 9 7 6| +| 1 3 8| +| 2 7 3 | +| 9 8 | +|7 4 6 3| +| 5 2 | +| 5 3 9 | +|2 5 4 | +|1 2 4 | ++-----------------+ ++-----------------+ +| 2 4 7 6 | +| 4 9 | +| 9 6 7| +|8 1 5 | +| 5 3 7 1 | +| 1 5 2| +|7 8 4 | +| 3 7 | +| 6 9 5 3 | ++-----------------+ ++-----------------+ +| 5 3 1| +| 2 8 9 4 | +| 1 6 7 | +|1 9 7 | +| 4 5 | +| 9 2 8| +| 1 4 3 | +| 7 9 5 8 | +|9 8 3 | ++-----------------+ ++-----------------+ +| 8 1 6 | +| 4 2 8 | +| 6 3 5| +| 1 2 7 | +|3 2 9 1| +| 7 9 5 | +|1 3 5 | +| 9 3 6 | +| 8 1 9 | ++-----------------+ ++-----------------+ +| 1 4 | +| 9 1 8| +|6 5 3 1 | +| 9 2| +| 4 8 5 9 | +|5 3 | +| 2 8 1 3| +|1 5 3 | +| 1 2 | ++-----------------+ ++-----------------+ +| 8 9 3 1 5| +| | +| 7 6 5 8 | +|9 6| +|5 6 7 2| +|2 7 8| +| 5 8 2 4 | +| | +|7 5 4 3 8 | ++-----------------+ diff --git a/medium.txt b/medium.txt new file mode 100755 index 0000000..9030e05 --- /dev/null +++ b/medium.txt @@ -0,0 +1,220 @@ ++-----------------+ +| 9 3 | +|3 9 2| +| 5 2 3 1 7 | +| 4 2 5 | +|2 9 5 1| +| 1 3 2 | +| 8 3 4 5 1 | +|5 1 6| +| 1 8 | ++-----------------+ ++-----------------+ +| 4 7 1| +|8 2 1 | +| 7 9 3 | +| 4 2 6| +|2 7| +|6 5 9 | +| 5 6 1 | +| 4 9 5| +|4 1 3 | ++-----------------+ ++-----------------+ +|1 7 9 | +| 1 6| +|8 6 7 | +|9 3 8 1 | +| | +| 8 2 5 7| +| 4 6 5| +|3 5 | +| 2 4 8| ++-----------------+ ++-----------------+ +|3 9 4 | +| 9 7 | +| 8 5 3| +| 8 1 | +|5 4 7 9| +| 1 3 | +|2 7 5 | +| 8 6 | +| 3 2 4| ++-----------------+ ++-----------------+ +| 9 5 | +|4 7 2 | +| 8 3 6 4 1 | +| 1 5 8 | +| 3 7 | +| 2 7 4 | +| 4 5 1 8 7 | +| 7 5 2| +| 2 1 | ++-----------------+ ++-----------------+ +|9 4 2 | +| 5 7 4 | +| 1 6 | +|2 8 9 | +|7 8| +| 5 7 3| +| 8 9 | +| 6 3 4 | +| 1 3 5| ++-----------------+ ++-----------------+ +| 1 8 4 7| +|9 5 | +| 8 1 | +| 8 2 | +|7 4 6 8| +| 6 2 | +| 5 7 | +| 8 2| +|5 3 2 1 | ++-----------------+ ++-----------------+ +| 2 4 8| +| 2 9 | +| 1 9 | +|1 9 5 3 | +| 3 4 | +| 8 3 1 6| +| 8 7 | +| 1 5 | +|2 3 5 | ++-----------------+ ++-----------------+ +| 8 7 | +| 2 6 9 | +| 6 3 8 | +| 9 8 4 | +|4 5| +| 6 1 2 | +| 7 2 1 | +| 7 6 1 | +| 3 5 | ++-----------------+ ++-----------------+ +| 3 9 2 1 5| +|1 5 8 3 | +| | +|5 9 4| +|3 7 8 1| +|6 5 3| +| | +| 1 9 2 6| +|9 5 7 4 1 | ++-----------------+ ++-----------------+ +| 5 | +|1 2 4 9 3 | +| 2 1 6 | +| 2 | +| 3 5 7| +|5 9 4 | +| 9 6| +|9 5 3 8 4| +| 8 6 | ++-----------------+ ++-----------------+ +| 3 1 | +| 2 6 4 7| +| 2 3| +| 7 2 8 9| +| 3 6 | +|2 9 1 3 | +|8 3 | +|4 9 5 6 | +| 2 4 | ++-----------------+ ++-----------------+ +| | +|5 6 7 3| +| 7 6 4 8 1 | +|8 3 2| +| 5 8 9 | +|6 9 1| +| 8 1 7 4 2 | +|2 8 6 7| +| | ++-----------------+ ++-----------------+ +| 3 1 | +| 6 9 7 3 | +| 8 6| +| 1 8 4 | +| 7 8 | +| 2 9 6 | +|4 5 | +| 3 7 8 2 | +| 9 3 | ++-----------------+ ++-----------------+ +|2 9 | +| 7 6 5 9| +| 4 6 1| +|7 1 2 4| +| 4 | +|8 1 9 6| +|1 2 3 | +|5 3 2 7 | +| 9 2| ++-----------------+ ++-----------------+ +| 5 1 4 | +| 7 2 | +| 8 3| +| 1 8| +|5 4 9| +|7 6 | +|4 7 | +| 2 6 | +| 3 9 8 | ++-----------------+ ++-----------------+ +| 8 5| +| 1 9 | +|7 1 6| +| 1 6 9| +|3 5 1 4| +|6 8 3 | +|5 6 2| +| 5 4 | +|9 2 | ++-----------------+ ++-----------------+ +| 8 | +| 3 7 5 | +| 2 9 3| +| 9 6 2| +|2 4 8 1| +|6 5 7 | +|4 9 1 | +| 1 5 8 | +| 2 | ++-----------------+ ++-----------------+ +| 1 2 5| +| 7 5 | +|5 4 8 | +| 5 1 7 | +|9 7 3 8| +| 9 8 1 | +| 6 5 8 1| +| 4 9 | +|2 3 1 | ++-----------------+ ++-----------------+ +| 3 4 | +|8 5 6 | +|2 1 | +| 9 7 | +| 7 3 4 | +| 6 5 | +| 7 9| +| 1 6 8| +| 2 3 | ++-----------------+