36 lines
775 B
Plaintext
36 lines
775 B
Plaintext
global n, rw, dd, ud
|
|
|
|
procedure main(args)
|
|
n := integer(args[1]) | 8
|
|
rw := list(n)
|
|
dd := list(2*n-1)
|
|
ud := list(2*n-1)
|
|
solvequeen(1)
|
|
end
|
|
|
|
procedure solvequeen(c)
|
|
if (c > n) then return show()
|
|
else suspend placequeen(c) & solvequeen(c+1)
|
|
end
|
|
|
|
procedure placequeen(c)
|
|
suspend (/rw[r := 1 to n] <- /dd[r+c-1] <- /ud[n+r-c] <- c)
|
|
end
|
|
|
|
procedure show()
|
|
static count, line, border
|
|
initial {
|
|
count := 0
|
|
line := repl("| ",n) || "|"
|
|
border := repl("----",n) || "-"
|
|
}
|
|
write("solution: ", count+:=1)
|
|
write(" ", border)
|
|
every line[4*(!rw - 1) + 3] <- "Q" do {
|
|
write(" ", line)
|
|
write(" ", border)
|
|
}
|
|
write()
|
|
return # Comment out to see all possible solutions
|
|
end
|