Lösungen des ct-Puzzles
Quelltext der Rekursion
Walter Trump
Procedure Rekursion(ByVal puzzle As Large) Naked
$StepOff
$ArrayCheckOff
$ForFast
Dim i As Register Int
Dim b As Register Int
. mov edx, dpt puzzle[4]
. cmp edx, -1
. je .LoBits
. not edx
. bsr eax, edx
. add eax, 32
. mov b, eax
. jmp .Weiter
LoBits:
. mov edx, dpt puzzle[0]
. not edx
. bsr eax, edx
. mov b, eax
. jnz .Weiter
cLsg++
If cLsg >= TLsg Then AusgabeLoesung
Exit Proc
Weiter:
If f1
For i = first1(b) To last1(b)
If (puzzle And8 Rfig(i)) = 0
f1 = 0
Rekursion(puzzle Or8 Rfig(i))
f1 = 1
EndIf
Next i
End If
If f2
For i = first2(b) To last2(b)
If (puzzle And8 Rfig(i)) = 0
f2 = 0
Rekursion(puzzle Or8 Rfig(i))
f2 = 1
EndIf
Next i
End If
If f3
For i = first3(b) To last3(b)
If (puzzle And8 Rfig(i)) = 0
f3 = 0
Rekursion(puzzle Or8 Rfig(i))
f3 = 1
EndIf
Next i
End If
If f4
For i = first4(b) To last4(b)
If (puzzle And8 Rfig(i)) = 0
f4 = 0
Rekursion(puzzle Or8 Rfig(i))
f4 = 1
EndIf
Next i
End If
If f5
For i = first5(b) To last5(b)
If (puzzle And8 Rfig(i)) = 0
f5 = 0
Rekursion(puzzle Or8 Rfig(i))
f5 = 1
EndIf
Next i
End If
If f6
For i = first6(b) To last6(b)
If (puzzle And8 Rfig(i)) = 0
f6 = 0
Rekursion(puzzle Or8 Rfig(i))
f6 = 1
EndIf
Next i
End If
If f7
For i = first7(b) To last7(b)
If (puzzle And8 Rfig(i)) = 0
f7 = 0
Rekursion(puzzle Or8 Rfig(i))
f7 = 1
EndIf
Next i
End If
If f8
For i = first8(b) To last8(b)
If (puzzle And8 Rfig(i)) = 0
f8 = 0
Rekursion(puzzle Or8 Rfig(i))
f8 = 1
EndIf
Next i
End If
If f9
For i = first9(b) To last9(b)
If (puzzle And8 Rfig(i)) = 0
f9 = 0
Rekursion(puzzle Or8 Rfig(i))
f9 = 1
EndIf
Next i
End If
If f10
For i = first10(b) To last10(b)
If (puzzle And8 Rfig(i)) = 0
f10 = 0
Rekursion(puzzle Or8 Rfig(i))
f10 = 1
EndIf
Next i
End If
If f11
For i = first11(b) To last11(b)
If (puzzle And8 Rfig(i)) = 0
f11 = 0
Rekursion(puzzle Or8 Rfig(i))
f11 = 1
EndIf
Next i
End If
If f12
For i = first12(b) To last12(b)
If (puzzle And8 Rfig(i)) = 0
f12 = 0
Rekursion(puzzle Or8 Rfig(i))
f12 = 1
EndIf
Next i
End If
End Proc