3v4l.org

run code in 150+ php & hhvm versions
Bugs & Features
<?php class SudokuSolver { protected $sudokuRows; public function __construct ($sudoku) { $this->sudokuRows = $sudoku; } protected static function getNumbers () { return 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() { if (!$this->checkConsistenz()) { throw new Exception("inconsistent data!"); } $this->calculatePossibleNumbers(); } protected function calculatePossibleNumbers() { $rowIndex = 0; while ($rowIndex < 9) { $columnIndex = 0; while ($columnIndex < 9) { $columnIndex++; } $rowIndex++; } $cellValue = } protected function checkConsistenz () { $columns = $this->sudokuRows; 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) { //echo "(3 * ($columnIndex / 3)) + ($rowIndex / 3) = ". (3 * ($columnIndex / 3)) ." + ". ($rowIndex / 3) ."\n"; $fields[(3 * intval($columnIndex / 3)) + intval($rowIndex / 3)][] = $cell; } } //print_r($fields); foreach ($fields 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; } $indexOf = arrau_search($column,$numbers); if (false === $indexOf) { return false; } unset($numbers[$indexOf]); } return true; } } $sudoku = array(); $sudoku[] = array(null,3,null, null,null,null, null,null,null); $sudoku[] = array(3,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.3.0 - 5.4.17
Parse error: syntax error, unexpected '}' in /in/A4H7m on line 54
Process exited with code 255.