57 lines
1.1 KiB
Plaintext
57 lines
1.1 KiB
Plaintext
' version 13-04-2017
|
|
' compile with: fbc -s console
|
|
Dim Shared As ULong count, c()
|
|
|
|
Sub n_queens(row As ULong, n As ULong, show As ULong = 0)
|
|
|
|
Dim As ULong x, y
|
|
|
|
For x = 1 To n
|
|
|
|
For y = 1 To row -1
|
|
If c(y) = x OrElse ((row - y) - Abs(x - c(y))) = 0 Then
|
|
Continue For, For
|
|
End If
|
|
Next
|
|
|
|
c(row) = x
|
|
If row < n Then
|
|
n_queens(row +1 , n, show)
|
|
Else
|
|
count += 1
|
|
|
|
If show <> 0 Then
|
|
For y = 1 To n
|
|
Print Using "###"; c(y);
|
|
Next
|
|
Print
|
|
End If
|
|
|
|
End If
|
|
|
|
Next
|
|
|
|
End Sub
|
|
|
|
' ------=< MAIN >=------
|
|
|
|
Dim As ULong n = 5
|
|
ReDim c(n)
|
|
' n_queens(1, n, show = 0 only show total | show <> 0 show every solution
|
|
n_queens(1, n, 1)
|
|
Print Using "## x ## board, ##### solutions"; n; n; count
|
|
Print
|
|
|
|
For n = 1 To 14
|
|
ReDim c(n)
|
|
count = 0
|
|
n_queens(1, n)
|
|
Print Using "A ## x ## board has ######## solutions"; n; n; count
|
|
Next
|
|
|
|
' empty keyboard buffer
|
|
While Inkey <> "" : Wend
|
|
Print : Print "hit any key to end program"
|
|
Sleep
|
|
End
|