--- /dev/null
+<form action="?" method="POST">\r
+<textarea rows="9" cols="9" name="sudokupost">43 6 5 89\r
+56 23\r
+ 2 3 \r
+7 5 6 9 4\r
+ 9 1 \r
+2 9 7 5 1\r
+ 4 8 \r
+32 56\r
+89 5 6 12</textarea>\r
+<br /><input type="submit" value="Vyresit">\r
+</form>\r
+\r
+<?php\r
+//Sudoku\r
+\r
+//\r
+function sudoku_print ($sudo) {\r
+ $sudo = str_replace(" ", ".", implode("\n", $sudo) );\r
+ $sudo = explode("\n", $sudo);\r
+ print_r($sudo);\r
+}\r
+\r
+//X line\r
+//Y row\r
+\r
+//\r
+function sudoku_pos ($sudo, $x, $y) {\r
+ return($sudo[$x-1][$y-1]);\r
+}\r
+//\r
+function sudoku_row ($sudo, $y) {\r
+ $row = "";\r
+ foreach ($sudo as $line) {\r
+ $row = ($row.$line[$y-1]);\r
+ }\r
+ return $row;\r
+}\r
+//\r
+function sudoku_line ($sudo, $x) {\r
+ return $sudo[$x-1];\r
+}\r
+//\r
+function sudoku_square ($sudo, $x, $y) {\r
+ if ( $x == 1 || $x == 2 || $x == 3 ) { $x = 1; }\r
+ if ( $x == 4 || $x == 5 || $x == 6 ) { $x = 4; }\r
+ if ( $x == 7 || $x == 8 || $x == 9 ) { $x = 7; }\r
+ if ( $y == 1 || $y == 2 || $y == 3 ) { $y = 1; }\r
+ if ( $y == 4 || $y == 5 || $y == 6 ) { $y = 4; }\r
+ if ( $y == 7 || $y == 8 || $y == 9 ) { $y = 7; }\r
+ //echo("\n$x\n$y\n");\r
+ $square = "";\r
+ $x--;\r
+ $y--;\r
+ $y0 = $y;\r
+ \r
+ $i2 = 0;\r
+ while( $i2 < 3 ){\r
+ $i1 = 0;\r
+ $y = $y0;\r
+ while ( $i1 < 3 ){\r
+ $square = $square.$sudo[$x][$y];\r
+ $y++;\r
+ $i1++;\r
+ //echo("\n$x-$y");\r
+ }\r
+ $i2++;\r
+ $x++;\r
+ }\r
+ //echo("\n".$square);\r
+ return ($square);\r
+}\r
+\r
+//\r
+function sudoku_candidates ($sudo, $x, $y) {\r
+ $cands = "123456789";\r
+ $donenums = ( sudoku_line($sudo, $x).sudoku_row($sudo, $y).sudoku_square($sudo, $x, $y) );\r
+ //echo $donenums;\r
+ //echo "\n\n";\r
+ //foreach ( $donenums as $del ) {\r
+ $indx = strlen($donenums)-1;\r
+ while ($indx >= 0) {\r
+ $del = $donenums[$indx];\r
+ //echo("!".$del);\r
+ $cands = str_replace($del, "", $cands);\r
+ $indx--;\r
+ }\r
+ //echo "\n\n".$cands;\r
+ return $cands;\r
+}\r
+\r
+//\r
+function sudoku_compute($sudoku) {\r
+\r
+ $sudoku_old = "";\r
+ while( $sudoku_old != $sudoku ) {\r
+ $sudoku_old = $sudoku;\r
+\r
+ $is = sizeof($sudoku)-1;\r
+ while ($is >= 0) {\r
+ $line = $sudoku[$is];\r
+ \r
+ $i = strlen($line)-1;\r
+ while ($i >= 0) {\r
+ //echo($line[$i]);\r
+ \r
+ $cands = sudoku_candidates ( $sudoku, ($is+1), ($i+1) );\r
+ if ( strlen($cands) == 1 && !is_numeric($sudoku[$is][$i]) ) {\r
+ $sudoku[$is][$i] = $cands;\r
+ }\r
+ \r
+ $i--;\r
+ }\r
+ //echo("\n");\r
+ \r
+ $is--;\r
+ }\r
+ }\r
+ return($sudoku);\r
+}\r
+\r
+///CODE///////////////////////////////////////////\r
+/*\r
+$sudoku = array(\r
+ "43 6 5 89",\r
+ "56 23",\r
+ " 2 3 ",\r
+ "7 5 6 9 4",\r
+ " 9 1 ",\r
+ "2 9 7 5 1",\r
+ " 4 8 ",\r
+ "32 56",\r
+ "89 5 6 12"\r
+ );\r
+*/\r
+\r
+sudoku = explode ("\n",$_POST["sudokupost"]);\r
+\r
+\r
+echo("Zadani:\n");\r
+sudoku_print($sudoku);\r
+echo("\nVysledek:\n");\r
+sudoku_print(sudoku_compute($sudoku));\r
+\r
+?>\r