3v4l.org

run code in 150+ php & hhvm versions
Bugs & Features
<?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; foreach ($columns as $columnIndex => $column) { if (!$this->checkLine($columnIndex,$column)) { return false; } } // 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) { if (!$this->checkLine($rowIndex,$row)) { return false; } } // check field -> own method $fields = array(); foreach ($columns as $columnIndex => $column) { foreach ($column as $rowIndex => $cell) { $fields[$rowIndex / 3][$columnIndex + ($rowIndex / 3)] = $cell; } print_r($fields); } foreach ($rows as $rowIndex => $row) { if (!$this->checkLine($rowIndex,$row)) { return false; } } return true; } protected function checkLine ($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; } 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);
Output for 5.0.0 - 5.6.28, hhvm-3.12.0, 7.0.0 - 7.1.0
checking 0.. checking 1.. checking 2.. checking 3.. checking 4.. checking 5.. checking 6.. checking 7.. checking 8.. checking 0.. checking 1.. checking 2.. checking 3.. checking 4.. checking 5.. checking 6.. checking 7.. checking 8.. Array ( [0] => Array ( [0] => ) [1] => Array ( [1] => ) [2] => Array ( [2] => ) ) Array ( [0] => Array ( [0] => [1] => ) [1] => Array ( [1] => [2] => 5 ) [2] => Array ( [2] => [3] => ) ) Array ( [0] => Array ( [0] => [1] => [2] => 8 ) [1] => Array ( [1] => [2] => 5 [3] => ) [2] => Array ( [2] => [3] => [4] => ) ) Array ( [0] => Array ( [0] => [1] => [2] => 8 [3] => ) [1] => Array ( [1] => [2] => 5 [3] => [4] => ) [2] => Array ( [2] => [3] => [4] => [5] => ) ) Array ( [0] => Array ( [0] => [1] => [2] => 8 [3] => [4] => ) [1] => Array ( [1] => [2] => 5 [3] => [4] => [5] => ) [2] => Array ( [2] => [3] => [4] => [5] => [6] => 1 ) ) Array ( [0] => Array ( [0] => [1] => [2] => 8 [3] => [4] => [5] => ) [1] => Array ( [1] => [2] => 5 [3] => [4] => [5] => [6] => ) [2] => Array ( [2] => [3] => [4] => [5] => [6] => 1 [7] => ) ) Array ( [0] => Array ( [0] => [1] => [2] => 8 [3] => [4] => [5] => [6] => ) [1] => Array ( [1] => [2] => 5 [3] => [4] => [5] => [6] => [7] => ) [2] => Array ( [2] => [3] => [4] => [5] => [6] => 1 [7] => [8] => ) ) Array ( [0] => Array ( [0] => [1] => [2] => 8 [3] => [4] => [5] => [6] => [7] => ) [1] => Array ( [1] => [2] => 5 [3] => [4] => [5] => [6] => [7] => [8] => 9 ) [2] => Array ( [2] => [3] => [4] => [5] => [6] => 1 [7] => [8] => [9] => 5 ) ) Array ( [0] => Array ( [0] => [1] => [2] => 8 [3] => [4] => [5] => [6] => [7] => [8] => ) [1] => Array ( [1] => [2] => 5 [3] => [4] => [5] => [6] => [7] => [8] => 9 [9] => ) [2] => Array ( [2] => [3] => [4] => [5] => [6] => 1 [7] => [8] => [9] => 5 [10] => ) ) checking 0.. checking 1.. checking 2.. checking 3.. checking 4.. checking 5.. checking 6.. checking 7.. checking 8..
Output for hhvm-3.10.0

Process exited with code 153.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/4UeS9 on line 5
Process exited with code 255.
Output for 4.3.1, 4.3.5 - 4.4.1
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/4UeS9 on line 5
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /in/4UeS9 on line 5
Process exited with code 255.
Output for 4.3.0
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/KBk9b on line 5
Process exited with code 255.