Hallo!
Ich probiere grade ein Sudoku rekursiv zu lösen... Da ich mit der Sprache LJ4 arbeite kann ich leider keine Funktionen mit Rückgabewert benutzen. Weil LJ4 stark der Syntax von VB gleicht, dachte ich mir dass ich hier die Frage stelle!
Kann ich auch mit Subs ein rekursives Backtrackingverfahren erstellen?
Der Code sieht bis jetzt wie folgt aus:
VtUsed ist hierbei die Tabelle auf der gearbeitet wird...
Ich hoffe dass ihr durch den Code steigen könnt!
Danke schonmal für Mühen
Gruß manuche
Ich probiere grade ein Sudoku rekursiv zu lösen... Da ich mit der Sprache LJ4 arbeite kann ich leider keine Funktionen mit Rückgabewert benutzen. Weil LJ4 stark der Syntax von VB gleicht, dachte ich mir dass ich hier die Frage stelle!
Kann ich auch mit Subs ein rekursives Backtrackingverfahren erstellen?
Der Code sieht bis jetzt wie folgt aus:
Code:
Sub CC_SudokuBT(
ByVal VtUsed As tHandle,
ByVal nField As tShort = 0,
ByVal bRekursion As tBoolean = True)
Dim strActCol As tString
Dim strAct As tString
Dim strRandom As tString
Dim bReturn As tBoolean
Dim nZeile As tShort
Dim nSpalte As tShort
Dim nZaehler As tShort
If (bRekursion) Then
If (CompareNum (nField, 81) = CompareEqual) Then CC_SudokuBT (VtUsed, nField + 1, False)
nZeile = (nField Mod 9) + 1
nSpalte = (nField Div 9) + 1
strActCol = "Zelle(" & Str (nSpalte) & ")"
strAct = VtGetStr (VtUsed, strActCol, nZeile)
If (Len (strAct) > 1) Then
Do
strRandom = RightStr (Now (False, True), 1)
Loop While (CompareStr (strRandom, "0") = CompareEqual)
VtSetStr (VtUsed, strActCol, strRandom, nZeile)
If (Not CC_CheckBlock (strRandom, strActCol, nZeile, "VtWorkSudoku") And Not CC_CheckRow (strRandom, strActCol, nZeile, "VtWorkSudoku") And Not CC_CheckCol (strRandom, strActCol, nZeile, "VtWorkSudoku")) Then
CC_SudokuBT (VtUsed, nField + 1, True)
Else
VtSetStr (VtUsed, strActCol, "123456789", nZeile)
End If
Else
CC_SudokuBT (VtUsed, nField + 1, True)
End If
CC_SudokuBT (VtUsed, nField, False)
End If
End Sub // CC_SudokuBT
VtUsed ist hierbei die Tabelle auf der gearbeitet wird...
Ich hoffe dass ihr durch den Code steigen könnt!
Danke schonmal für Mühen
Gruß manuche
Zuletzt bearbeitet: