/* A program to solve the N-queens problem */ let var N := 5 type intArray = array of int var row := intArray [ N ] of 0 var col := intArray [ N ] of 0 var diag1 := intArray [N+N-1] of 0 var diag2 := intArray [N+N-1] of 0 function printboard() = (for i := 0 to N-1 do (for j := 0 to N-1 do print(if col[i]=j then " O" else " ."); print("\n")); print("\n")) function try(c : int) = ( /* for i := 0 to c do print("."); print("\n"); flush();*/ if c=N then printboard() else for r := 0 to N-1 do if row[r]=0 & diag1[r+c]=0 & diag2[r+N-1-c]=0 then (row[r] :=1; diag1[r+c] :=1; diag2[r+N-1-c] :=1; col[c] :=r; try(c+1); row[r] :=0; diag1[r+c] :=0; diag2[r+N-1-c] :=0) ) in try(0) end