@ 2013-08-09T18:48:16Z <?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($column,$numbers);
}
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.5.1 0.007 0.070 17.18 5.5.0 0.010 0.073 17.30 5.4.17 0.007 0.070 19.11 5.4.16 0.010 0.050 19.04 5.4.15 0.007 0.040 19.25 5.4.14 0.000 0.040 16.55 5.4.13 0.007 0.070 16.57 5.4.12 0.010 0.067 16.39 5.4.11 0.013 0.067 16.46 5.4.10 0.000 0.040 16.39 5.4.9 0.010 0.067 16.35 5.4.8 0.000 0.067 16.47 5.4.7 0.007 0.047 16.30 5.4.6 0.003 0.063 16.57 5.4.5 0.003 0.040 16.40 5.4.4 0.000 0.070 16.46 5.4.3 0.003 0.040 16.43 5.4.2 0.007 0.060 16.39 5.4.1 0.007 0.073 16.39 5.4.0 0.003 0.067 15.90 5.3.27 0.000 0.050 14.83 5.3.26 0.000 0.050 14.66 5.3.25 0.010 0.067 14.63 5.3.24 0.017 0.053 14.72 5.3.23 0.007 0.073 14.62 5.3.22 0.003 0.083 14.61 5.3.21 0.003 0.077 14.43 5.3.20 0.007 0.040 14.63 5.3.19 0.007 0.053 14.58 5.3.18 0.007 0.073 14.69 5.3.17 0.007 0.073 14.64 5.3.16 0.000 0.060 14.57 5.3.15 0.007 0.043 14.53 5.3.14 0.007 0.047 14.61 5.3.13 0.007 0.063 14.57 5.3.12 0.010 0.050 14.52 5.3.11 0.007 0.073 14.63 5.3.10 0.007 0.073 14.09 5.3.9 0.010 0.077 14.02 5.3.8 0.010 0.073 13.93 5.3.7 0.010 0.067 14.04 5.3.6 0.003 0.063 13.91 5.3.5 0.003 0.047 14.01 5.3.4 0.010 0.070 14.01 5.3.3 0.010 0.043 13.95 5.3.2 0.010 0.057 13.75 5.3.1 0.003 0.073 13.55 5.3.0 0.010 0.070 13.68
preferences:dark mode live preview
141.71 ms | 1394 KiB | 7 Q