also ich bin ja grad dabei Einen Sudoku-generator zu bauen aber der hängt sich immer an irgendeiner stelle auf:
Spoiler anzeigen
Global $Zahlen[10][10]
Global $Err = False
Global $Return
Dim $Ohne[28]
Dim $OhneQuadrat[10]
Dim $OhneZeile[10]
Dim $OhneSpalte[10]
Dim $show
;______________________________________________________________________
For $Zeile = 1 To 9
For $Spalte = 1 To 9
$OhneQuadrat = OhneQuadrat($Zeile, $Spalte)
$OhneZeile = OhneZeile($Zeile)
$OhneSpalte = OhneSpalte($Spalte)
$Ohne = zusammen($OhneZeile, $OhneSpalte, $OhneQuadrat)
$Zahl = Generate($Ohne)
If $Err = True Then
$Zeile = 0
$Spalte = 0
Global $Zahlen[10][10]
Else
$Zahlen[$Zeile][$Spalte] = $Zahl
For $ToolTip = 1 To 27
$show = $show & $Ohne[$ToolTip]
Next
ToolTip("Zeile: " & $Zeile & @CRLF & "Spalte: " & $Spalte & @CRLF & @CRLF & $show)
$Zahlen[$Zeile][$Spalte] = $Zahl
$show = ""
EndIf
Dim $Ohne[28]
Next
Next
$FOW = FileOpen(@ScriptDir & "\Ausgabe.txt", 1)
For $Zeile = 1 To 9
For $Spalte = 1 To 9
FileWrite($FOW, $Zahlen[$Zeile][$Spalte])
If $Spalte = 9 Then
FileWrite($FOW, @LF)
EndIf
Next
Next
FileClose($FOW)
Func Generate($Array)
$OK = False
Global $Durchlaufen = 0
$To = UBound($Array)-1
Do
$Random = Random(1, 9, 1)
$OK = True
For $Check = 1 To $To
If $Random = $Array[$Check] Then
$OK = False
EndIf
Next
$Durchlaufen = $Durchlaufen+1
If $Durchlaufen = 100 Then
ExitLoop
EndIf
Until $OK = True
If $Durchlaufen = 100 Then
Global $Err = True
Else
Return $Random
EndIf
EndFunc ;==> Generate
Func OhneQuadrat($WoZeile, $WoSpalte)
Switch $WoZeile
Case 1 To 3
Switch $WoSpalte
Case 1 To 3
$Return = GetQu(1, 3, 1, 3)
Case 4 To 6
$Return = GetQu(1, 3, 4, 6)
Case 7 To 9
$Return = GetQu(1, 3, 7, 9)
EndSwitch
Case 4 To 6
Switch $WoSpalte
Case 1 To 3
$Return = GetQu(4, 6, 1, 3)
Case 4 To 6
$Return = GetQu(4, 6, 4, 6)
Case 7 To 9
$Return = GetQu(4, 6, 7, 9)
EndSwitch
Case 7 To 9
Switch $WoSpalte
Case 1 To 3
$Return = GetQu(7, 9, 1, 3)
Case 4 To 6
$Return = GetQu(7, 9, 4, 6)
Case 7 To 9
$Return = GetQu(7, 9, 7, 9)
EndSwitch
EndSwitch
Return $Return
EndFunc ;==> OhneQuadrat
Func OhneZeile($x)
Local $Return[10]
For $y = 1 To 9
$Return[$y] = $Zahlen[$x][$y]
Next
Return $Return
EndFunc ;==> OhneZeile
Func OhneSpalte($y)
Local $Return[10]
For $x = 1 To 9
$Return[$x] = $Zahlen[$x][$y]
Next
Return $Return
EndFunc ;==> OhneSpalte
Func GetQu($Von_x, $Zu_x, $Von_y, $Zu_y)
Local $Nummer = 1
Local $Ohne[10]
For $FillZeile = $Von_x To $Zu_x
For $FillSpalte = $Von_y To $Zu_y
$Ohne[$Nummer] = $Zahlen[$FillZeile][$FillSpalte]
$Nummer = $Nummer+1
Next
Next
Return $Ohne
EndFunc ;==> qfill
Func Zusammen($x, $y, $q)
Local $Return[28]
Local $Nummer = 1
For $zusammen = 1 To 9
$Return[$zusammen] = $x[$Nummer]
$Nummer = $Nummer+1
Next
$Nummer = 1
For $zusammen = 10 To 18
$Return[$zusammen] = $y[$Nummer]
$Nummer = $Nummer+1
Next
$Nummer = 1
For $zusammen = 19 To 27
$Return[$zusammen] = $q[$Nummer]
$Nummer = $Nummer+1
Next
Return $Return
EndFunc ;==> Zusammen
ich brauche unbedingt hilfe ich hap echt keinen plan wo der sich aufhängt.
ps: denn tooltip hap ich eingebaut um zu sehen wie weit er schon iss.
Edit peethebee: Sinnvollen Threadtitel vergeben - deiner wäre eingentlich ein Löschgrund
Wo wir gerade dabei sind: Das Wort heißt "habe" (kurz allenfalls "hab"), nicht "hap"...