DONT WORK
unknown
php
4 years ago
3.0 kB
1
Indexable
<?php class SudokuSolver{ private array $grid; public function __construct(array $a) { $this->grid = array($a); } public function solve(): array|bool { if (!$this->validate()){ return false; } $x = 0; $y = 0; for($i =0 ;$i < 9; $i ++){ for($j = 0; $j < 0; $j ++){ if($this->grid[$i][$j] == 0){ return true; } else{ $x = $i; $y = $j; } } } for ($i = 1; $i < 10;$i ++){ $this->grid[$x][$y] = $i; if($this->solve()) return $this->grid; } $this->grid[$x][$y] = 0; return false; } public function reverse_solve() : array|bool{ if (!$this->validate()){ return false; } $x = 0; $y = 0; for($i =0 ;$i < 9; $i ++){ for($j = 0; $j < 0; $j ++){ if($this->grid[$i][$j] == 0){ return true; } else{ $x = $i; $y = $j; } } } for ($i = 10; $i > 0;$i --){ $this->grid[$x][$y] = $i; if($this->solve()) return $this->grid; } $this->grid[$x][$y] = 0; return false; } private function validate() : bool{ if(!$this->validate_columns()){ return false; } if(!$this->validate_regions()){ return false; } if(!$this->validate_rows()){ return false; } return true; } private function validate_columns() : bool { for ($i = 0; $i < 9; $i++){ $a = [0,0,0,0,0,0,0,0,0]; for ($j = 0; $j < 9; $j ++){ if ($a[$this->grid[$j][$i]] != 0){ return false; } $a[$this->grid[$j][$i]]++; } } return true; } private function validate_rows() : bool { for ($i = 0; $i < 9; $i++){ $a = [0,0,0,0,0,0,0,0,0]; for ($j = 0; $j < 9; $j ++){ if ($a[$this->grid[$i][$j]] != 0){ return false; } $a[$this->grid[$i][$j]]++; } } return true; } private function validate_regions() : bool { for($i = 0; $i < 9; $i += 3){ for($j = 0; $j < 9; $j += 3){ $a = [0,0,0,0,0,0,0,0,0]; for ($row = 0; $row < 3; $row ++){ for ($column = 0; $column < 3; $column++){ if ($a[$this->grid[$i + $row][$j + $column]] != 0){ return false; } $a[$this->grid[$i + $row][$j + $column]]++; } } } } } }
Editor is loading...