```Exact cover N-Queens
--------------------
The N-Queens puzzle may be expressed and solved as an exact cover problem:

queensX←{               ⍝ Exact cover N-Queens.
m←⍳3/⍵              ⍝ cell coordinate properties.
r←=/¨1 0 1∘/¨m      ⍝ each rank must contain one queen.
f←=/¨0 1 1∘/¨m      ⍝  ..  file  ..     ..      ..

dm←-/¨⍳2/⍵          ⍝ diagonal labels.
du←{⍵[⍋⍵]}∪,dm      ⍝ unique labels.
y←⊖x←dm∘.=du        ⍝ x and y diagonals.

m←,[⍳2]x,y,r,f      ⍝ constraints matrix.

d←~(⍳1↓⍴m)∊⍳2×⍴du   ⍝ mask of required cols.
⍵ ⍵⍴d X m           ⍝ exact cover - matrix of queens.
}

⍝ A solution for each of the first 9 N-Queens problems:

queensX¨ 0 to 8
┌┬─┬───┬─────┬───────┬─────────┬───────────┬─────────────┬───────────────┐
││1│0 0│0 0 0│0 1 0 0│0 0 0 0 1│0 0 0 0 1 0│0 0 0 0 0 0 1│0 0 0 0 0 0 0 1│
││ │0 0│0 0 0│0 0 0 1│0 1 0 0 0│0 0 1 0 0 0│0 0 0 0 1 0 0│0 0 0 1 0 0 0 0│
││ │   │0 0 0│1 0 0 0│0 0 0 1 0│1 0 0 0 0 0│0 0 1 0 0 0 0│1 0 0 0 0 0 0 0│
││ │   │     │0 0 1 0│1 0 0 0 0│0 0 0 0 0 1│1 0 0 0 0 0 0│0 0 1 0 0 0 0 0│
││ │   │     │       │0 0 1 0 0│0 0 0 1 0 0│0 0 0 0 0 1 0│0 0 0 0 0 1 0 0│
││ │   │     │       │         │0 1 0 0 0 0│0 0 0 1 0 0 0│0 1 0 0 0 0 0 0│
││ │   │     │       │         │           │0 1 0 0 0 0 0│0 0 0 0 0 0 1 0│
││ │   │     │       │         │           │             │0 0 0 0 1 0 0 0│
└┴─┴───┴─────┴───────┴─────────┴───────────┴─────────────┴───────────────┘

Technical notes:

Function [queensX] constructs a boolean constraint matrix m, in which  the  col-
mums representing diagonals are optional.  As an example, the final  constraints
matrix for the inner function for a 4-Queens problem has these regions:

┌───────────────────────────────────── x-diagonal requirements
│             ┌─────────────────────── y-diagonal    ..  ..
│             │          ┌──────────── rank (row)    ..  ..
│             │          │       ┌──── file (col)    ..  ..
│             │          │       │
┌─────────────┬─────────────┬───────┬───────┐
│0 0 0 1 0 0 0│0 0 0 0 0 0 1│1 0 0 0│1 0 0 0│
│0 0 1 0 0 0 0│0 0 0 0 0 1 0│1 0 0 0│0 1 0 0│
│0 1 0 0 0 0 0│0 0 0 0 1 0 0│1 0 0 0│0 0 1 0│
│1 0 0 0 0 0 0│0 0 0 1 0 0 0│1 0 0 0│0 0 0 1│
│0 0 0 0 1 0 0│0 0 0 0 0 1 0│0 1 0 0│1 0 0 0│
│0 0 0 1 0 0 0│0 0 0 0 1 0 0│0 1 0 0│0 1 0 0│
│0 0 1 0 0 0 0│0 0 0 1 0 0 0│0 1 0 0│0 0 1 0│
│0 1 0 0 0 0 0│0 0 1 0 0 0 0│0 1 0 0│0 0 0 1│
│0 0 0 0 0 1 0│0 0 0 0 1 0 0│0 0 1 0│1 0 0 0│
│0 0 0 0 1 0 0│0 0 0 1 0 0 0│0 0 1 0│0 1 0 0│
│0 0 0 1 0 0 0│0 0 1 0 0 0 0│0 0 1 0│0 0 1 0│
│0 0 1 0 0 0 0│0 1 0 0 0 0 0│0 0 1 0│0 0 0 1│
│0 0 0 0 0 0 1│0 0 0 1 0 0 0│0 0 0 1│1 0 0 0│
│0 0 0 0 0 1 0│0 0 1 0 0 0 0│0 0 0 1│0 1 0 0│
│0 0 0 0 1 0 0│0 1 0 0 0 0 0│0 0 0 1│0 0 1 0│
│0 0 0 1 0 0 0│1 0 0 0 0 0 0│0 0 0 1│0 0 0 1│
├─────────────┴─────────────┼───────┴───────┤
│1 0 0 0 0 0 0 0 0 0 0 0 0 0│0 0 0 0 0 0 0 0│
│0 1 0 0 0 0 0 0 0 0 0 0 0 0│0 0 0 0 0 0 0 0│
│0 0 1 0 0 0 0 0 0 0 0 0 0 0│0 0 0 0 0 0 0 0│
│0 0 0 1 0 0 0 0 0 0 0 0 0 0│0 0 0 0 0 0 0 0│
│0 0 0 0 1 0 0 0 0 0 0 0 0 0│0 0 0 0 0 0 0 0│
│0 0 0 0 0 1 0 0 0 0 0 0 0 0│0 0 0 0 0 0 0 0│
│0 0 0 0 0 0 1 0 0 0 0 0 0 0│0 0 0 0 0 0 0 0│
│0 0 0 0 0 0 0 1 0 0 0 0 0 0│0 0 0 0 0 0 0 0│
│0 0 0 0 0 0 0 0 1 0 0 0 0 0│0 0 0 0 0 0 0 0│
│0 0 0 0 0 0 0 0 0 1 0 0 0 0│0 0 0 0 0 0 0 0│
│0 0 0 0 0 0 0 0 0 0 1 0 0 0│0 0 0 0 0 0 0 0│
│0 0 0 0 0 0 0 0 0 0 0 1 0 0│0 0 0 0 0 0 0 0│
│0 0 0 0 0 0 0 0 0 0 0 0 1 0│0 0 0 0 0 0 0 0│
│0 0 0 0 0 0 0 0 0 0 0 0 0 1│0 0 0 0 0 0 0 0│
└───────────────────────────┴───────────────┘
│                     │
│                     └──────── padding for required reqts.
└────────────────────────────── dummy rows for optional reqts.