3v4l.org

run code in 300+ PHP versions simultaneously
<?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);

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).

VersionSystem time (s)User time (s)Memory (MiB)
5.4.170.0150.04312.40
5.4.160.0140.04512.39
5.4.150.0120.04912.39
5.4.140.0140.04512.08
5.4.130.0120.04712.06
5.4.120.0140.04312.03
5.4.110.0140.04312.02
5.4.100.0180.04112.02
5.4.90.0140.04312.02
5.4.80.0130.04412.02
5.4.70.0210.05212.02
5.4.60.0150.04212.02
5.4.50.0180.03912.02
5.4.40.0160.04012.00
5.4.30.0140.04412.00
5.4.20.0160.04111.99
5.4.10.0160.04012.00
5.4.00.0140.04211.49
5.3.270.0180.04312.72
5.3.260.0140.04712.72
5.3.250.0140.04612.72
5.3.240.0160.04412.72
5.3.230.0230.07012.71
5.3.220.0160.04512.68
5.3.210.0190.04312.68
5.3.200.0160.04512.68
5.3.190.0190.04312.68
5.3.180.0160.04312.67
5.3.170.0170.04312.67
5.3.160.0140.04512.68
5.3.150.0170.04312.68
5.3.140.0180.04212.66
5.3.130.0170.04312.66
5.3.120.0140.04712.66
5.3.110.0160.06012.66
5.3.100.0190.04212.13
5.3.90.0150.04312.11
5.3.80.0150.04512.09
5.3.70.0160.04312.10
5.3.60.0150.04512.08
5.3.50.0140.04512.03
5.3.40.0150.04312.03
5.3.30.0160.04211.99
5.3.20.0160.04211.77
5.3.10.0150.04111.74
5.3.00.0160.05611.72

preferences:
161.32 ms | 1394 KiB | 7 Q