N-queens problem: Difference between revisions

m
Line 3,404:
* * * Q
* Q * *
</pre>
 
=={{header|Easyprog.online}}==
 
<lang>n = 8
len queen_row[] n
#
func print_solution . .
h$ = "+"
for i = 1 to n - 1
h$ &= "----"
.
h$ &= "---+"
pr h$
for i range n
s$ = "|"
for j range n
if j = queen_row[i]
s$ &= " Q |"
else
s$ &= " |"
.
.
pr s$
pr h$
.
pr ""
.
#
func test_free col row . free .
free = 1
while i < row and free = 1
if queen_row[i] = col or abs (queen_row[i] - col) = abs (row - i)
free = 0
.
i += 1
.
.
#
pr "First 2 solutions: "
pr ""
n_solutions = 0
func try_row row . .
if row = n
n_solutions += 1
if n_solutions <= 2
call print_solution
.
else
for col range n
call test_free col row free
if free = 1
queen_row[row] = col
call try_row row + 1
.
.
.
.
call try_row 0
pr "Number of solutions: " & n_solutions</lang>
{{out}}
<pre>First 2 solutions:
 
+-------------------------------+
| Q | | | | | | | |
+-------------------------------+
| | | | | Q | | | |
+-------------------------------+
| | | | | | | | Q |
+-------------------------------+
| | | | | | Q | | |
+-------------------------------+
| | | Q | | | | | |
+-------------------------------+
| | | | | | | Q | |
+-------------------------------+
| | Q | | | | | | |
+-------------------------------+
| | | | Q | | | | |
+-------------------------------+
 
+-------------------------------+
| Q | | | | | | | |
+-------------------------------+
| | | | | | Q | | |
+-------------------------------+
| | | | | | | | Q |
+-------------------------------+
| | | Q | | | | | |
+-------------------------------+
| | | | | | | Q | |
+-------------------------------+
| | | | Q | | | | |
+-------------------------------+
| | Q | | | | | | |
+-------------------------------+
| | | | | Q | | | |
+-------------------------------+
 
Number of solutions: 92
</pre>
 
2,083

edits