RosettaCodeData/Task/N-queens-problem/Icon/n-queens-problem-1.icon

17 lines
450 B
Plaintext

procedure main()
write(q(1), " ", q(2), " ", q(3), " ", q(4), " ", q(5), " ", q(6), " ", q(7), " ", q(8))
end
procedure q(c)
static udiag, ddiag, row
initial {
udiag := list(15, 0)
ddiag := list(15, 0)
row := list(8, 0)
}
every 0 = row[r := 1 to 8] = ddiag[r + c - 1] = udiag[8 + r - c] do # test if free
suspend row[r] <- ddiag[r + c - 1] <- udiag[8 + r - c] <- r # place and yield
end