@ 2013-08-09T18:51:21Z <?php
class SudokuSolver
{
protected $sudokuColumns;
public function __construct ($sudoku)
{
$this->sudokuColumns = $sudoku;
}
protected static function getNumbers ()
{
return array_flip(str_split("123456789"));
}
// could be static as well
public function printOut ($sudoku)
{
foreach ($sudoku as $column) {
foreach ($column as $cell) {
echo "|";
if (null !== $cell) {
echo $cell;
} else {
echo " ";
}
}
echo "|\n";
}
}
public function solve()
{
$this->checkConsistenz();
}
protected function checkConsistenz ()
{
$columns = $this->sudokuColumns;
// check rows -> own method
$rows = array();
foreach ($columns as $columnIndex => $column) {
foreach ($column as $rowIndex => $cell) {
$rows[$rowIndex][$columnIndex] = $cell;
}
//$this->printOut($rows);
}
foreach ($rows as $rowIndex => $row) {
var_export($this->checkRow($rowIndex,$row));
}
}
protected function checkRow ($rowIndex, $row)
{
$numbers = self::getNumbers();
echo "checking $rowIndex..\n";
foreach ($row as $column) {
if (null === $column) {
continue;
}
//echo "$column , $numbers\n" . var_export(strpos($numbers,$column),true);
if (!array_key_exists($column,$numbers))
{
return false;
}
$numbers = unset($numbers[$column]);
}
return true;
}
}
$sudoku = array();
$sudoku[] = array(null,3,null, null,null,null, null,null,null);
$sudoku[] = array(null,null,null, 1,9,5, null,null,null);
$sudoku[] = array(null,null,8, null,null,null, null,6,null);
$sudoku[] = array(8,null,null, null,6,null, null,null,null);
$sudoku[] = array(4,null,null, 8,null,null, null,null,1);
$sudoku[] = array(null,null,null ,null,2,null, null,null,null);
$sudoku[] = array(null,6,null, null,null,null, 2,8,null);
$sudoku[] = array(null,null,null, 4,1,9, null,null,5);
$sudoku[] = array(null,null,null, null,null,null, null,7,null);
$sudokuSolver = new SudokuSolver($sudoku);
//$sudokuSolver->printOut($sudoku);
$sudokuSolver->solve($sudoku);
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).
Version System time (s) User time (s) Memory (MiB) 5.4.17 0.025 0.065 12.40 5.4.16 0.016 0.048 12.39 5.4.15 0.018 0.045 12.39 5.4.14 0.019 0.039 12.08 5.4.13 0.016 0.046 12.06 5.4.12 0.018 0.044 12.03 5.4.11 0.032 0.055 12.02 5.4.10 0.016 0.043 12.02 5.4.9 0.015 0.043 12.02 5.4.8 0.021 0.039 12.02 5.4.7 0.021 0.067 12.02 5.4.6 0.027 0.064 12.02 5.4.5 0.014 0.045 12.02 5.4.4 0.017 0.040 12.01 5.4.3 0.015 0.043 12.01 5.4.2 0.022 0.065 12.00 5.4.1 0.022 0.052 12.00 5.4.0 0.018 0.040 11.49 5.3.27 0.021 0.059 12.72 5.3.26 0.021 0.042 12.72 5.3.25 0.019 0.044 12.71 5.3.24 0.017 0.044 12.72 5.3.23 0.020 0.059 12.71 5.3.22 0.022 0.041 12.68 5.3.21 0.015 0.047 12.68 5.3.20 0.018 0.042 12.68 5.3.19 0.014 0.047 12.68 5.3.18 0.017 0.042 12.68 5.3.17 0.016 0.044 12.67 5.3.16 0.019 0.043 12.67 5.3.15 0.029 0.075 12.68 5.3.14 0.021 0.054 12.66 5.3.13 0.019 0.058 12.66 5.3.12 0.021 0.055 12.66 5.3.11 0.019 0.043 12.66 5.3.10 0.019 0.042 12.13 5.3.9 0.014 0.043 12.11 5.3.8 0.014 0.045 12.10 5.3.7 0.019 0.042 12.10 5.3.6 0.016 0.044 12.09 5.3.5 0.019 0.041 12.03 5.3.4 0.020 0.055 12.04 5.3.3 0.014 0.045 12.00 5.3.2 0.016 0.045 11.78 5.3.1 0.015 0.042 11.74 5.3.0 0.015 0.045 11.72
preferences:dark mode live preview
145.42 ms | 1386 KiB | 7 Q