Killing Tears
Mitglied
Hi,
ich habe ein Problem mit dem erstellen eines Sudokus.
Die Zahlen einzutragen ist kein Problem , aber eine Lösungsmaske zu erstellen um anschließend abzufragen ob die eingaben des Benutzers denn stimmen ist bei mir rein ohne erfolg.
Mein erster Versuch klappte einwandfrei bei einen 2x2feldrigen sudoku , aber beim klassischen 3x3feldrigen ist die Meldung gekommen "Seite kann nicht angezeigt werden" unter Vista stürzt dann sogar kurzzeitig der Apache HTTP server von XAMPP ab.
Mein zweiter ansatz ist gänzlich ohne erfolg gewesen... Mitlerweile bin ich bei folgenden Ansatz angelangt...
size ist dabei ein Wert den ich anfangs übergebe um zu sagen wie groß das sudokufeld sein soll.
2 ist also ein 2x2feldriges Sudoku und 3 ein 3x3feldriges
Die Anzeige des Feldes läuft getrennt in einer view ab (aber dort liegt kein problem)
ich habe ein Problem mit dem erstellen eines Sudokus.
Die Zahlen einzutragen ist kein Problem , aber eine Lösungsmaske zu erstellen um anschließend abzufragen ob die eingaben des Benutzers denn stimmen ist bei mir rein ohne erfolg.
Mein erster Versuch klappte einwandfrei bei einen 2x2feldrigen sudoku , aber beim klassischen 3x3feldrigen ist die Meldung gekommen "Seite kann nicht angezeigt werden" unter Vista stürzt dann sogar kurzzeitig der Apache HTTP server von XAMPP ab.
Mein zweiter ansatz ist gänzlich ohne erfolg gewesen... Mitlerweile bin ich bei folgenden Ansatz angelangt...
PHP:
<?php
function create_sudoku($size)
{
$how_much_to_show=$size*$size-1;
for ($counter=1;$counter<=$how_much_to_show+1;$counter++)
{
$x=rand(0,$size*$size-1);
$y=rand(0,$size*$size-1);
$_SESSION[anzeigeX][]=$x;
$_SESSION[anzeigeY][]=$y;
$zahl[$x][$y]=$counter;
}
$_SESSION[feld]=$zahl;
fill_sudoku($size,$_SESSION[feld]);
}
function fill_sudoku($size,$feld)
{
$newsize=$size*$size;
$check = true;
for ($eintrag =1 ; $eintrag <= $newsize;$eintrag++) // Zahl die in die Zellen kommt
{
for ($i = 0 ; $i <= $newsize-1 ; $i++) //X ->
{
for ($j = 0 ; $j <= $newsize-1 ; $j++)//Y |
{ // V
if ($feld[$i][$j]== null ) // wenn Feld leer
{
for ($z = 0 ; $z <= $newsize-1;$z++)
{
if ($feld[$i][$z]==$eintrag) // Vergleiche X
{
$check = false;
$j++;
}
if ($feld[$z][$j]==$eintrag)// Vergleiche Y
{
$check = false;
$i++;
}
// Vergleiche BOX
$i1 = round(($i-1) / 3)*3 + 1;
$j1 = round(($j-1) / 3)*3 + 1;
for ($i2=$i1; $i2 <= $i1+2;$i2++) // hohe auslastung beim 3x3feld
{
for ($j2=$j1; $j2 <= $j1+2;$j2++)
{
if ($feld[$i2][$j2]==$eintrag)
{
$check = false;
$i++;
}
}
}
if(($check == true))
{
$_SESSION[feld][$i][$j]=$eintrag;
$i=0;
$j=0;
}
}
}
}
}
}
}
size ist dabei ein Wert den ich anfangs übergebe um zu sagen wie groß das sudokufeld sein soll.
2 ist also ein 2x2feldriges Sudoku und 3 ein 3x3feldriges
Die Anzeige des Feldes läuft getrennt in einer view ab (aber dort liegt kein problem)