Mijn moeder kwam pas met een sudoku boekje aanzetten, en nu dacht ik, laat ik eens een php script proberen te maken die zo'n puzzel genereerd.
Maar nu heb ik een tijdje lopen proberen, en ik krijg hem niet snel genoeg te krijgen dat ie binnen de 30sec (of als ik hem zelfs naar 60 sec verhoog) timeout past.
Nu vroeg ik me af of er hier iemand is die nog dingen ziet die het script drastisch sneller maken.
<?php
error_reporting(E_ALL);
$getallen = Array(1,2,3,4,5,6,7,8,9);
$cols = Array();
$blokken = Array();
$rows = Array();
$blokn = true;
$blokgedoe = Array();
$blokgedoe[0] = Array(0 => 1, 1 => 1, 2 => 1, 3 => 2, 4 => 2, 5 => 2, 6 => 3, 7 => 3, 8 => 3);
$blokgedoe[1] = Array(0 => 1, 1 => 1, 2 => 1, 3 => 2, 4 => 2, 5 => 2, 6 => 3, 7 => 3, 8 => 3);
$blokgedoe[2] = Array(0 => 1, 1 => 1, 2 => 1, 3 => 2, 4 => 2, 5 => 2, 6 => 3, 7 => 3, 8 => 3);
$blokgedoe[3] = Array(0 => 4, 1 => 4, 2 => 4, 3 => 5, 4 => 5, 5 => 5, 6 => 6, 7 => 6, 8 => 6);
$blokgedoe[4] = Array(0 => 4, 1 => 4, 2 => 4, 3 => 5, 4 => 5, 5 => 5, 6 => 6, 7 => 6, 8 => 6);
$blokgedoe[5] = Array(0 => 4, 1 => 4, 2 => 4, 3 => 5, 4 => 5, 5 => 5, 6 => 6, 7 => 6, 8 => 6);
$blokgedoe[6] = Array(0 => 7, 1 => 7, 2 => 7, 3 => 8, 4 => 8, 5 => 8, 6 => 9, 7 => 9, 8 => 9);
$blokgedoe[7] = Array(0 => 7, 1 => 7, 2 => 7, 3 => 8, 4 => 8, 5 => 8, 6 => 9, 7 => 9, 8 => 9);
$blokgedoe[8] = Array(0 => 7, 1 => 7, 2 => 7, 3 => 8, 4 => 8, 5 => 8, 6 => 9, 7 => 9, 8 => 9);
$data = "<table width=\"300\">";
for ($i = 0; $i < 9; $i++) {
$data .= "<tr style=\"border : 2px solid #000;\">";
$copy = $getallen;
shuffle($copy);
$rows[$i] = Array();
for ($ii = 0; $ii < 9; $ii++) {
if ($blokn) {
if (empty($cols[$ii])) {
$cols[$ii] = Array();
}
$blok = $blokgedoe[$i][$ii];
if (empty($blokken[$blok])) {
$blokken[$blok] = Array();
}
}
if (!in_array($copy[$ii], $cols[$ii]) && !in_array($copy[$ii], $rows[$i]) && !in_array($copy[$ii], $blokken[$blok])) {
$data .= "<td style=\"border : 2px solid #000;\">" . $copy[$ii] . "</td>";
$cols[$ii][] = $copy[$ii];
$blokken[$blok][] = $copy[$ii];
$rows[$i][] = $copy[$ii];
$blokn = true;
} else {
$ii--;
shuffle($copy);
$blokn = false;
}
}
$data .= "</tr>";
}
echo $data;
?>
Ik ben benieuwd :)
1.767 views