LeetCode 52. N-Queens II in F#
URL
leetcode.com/problems/n-queens-ii
Code
github.com/syohex/dotnet-study/blob/master/..
open System
let totalNQueens (n: int) : int =
let rec totalNQueens' p n acc =
if p = n then
1
else
seq { 0 .. (n - 1) }
|> Seq.fold
(fun ret m ->
let ok =
acc
|> List.mapi (fun i j -> i + 1, j)
|> List.forall (fun (i, j) -> j <> m && Math.Abs(j - m) <> i)
if ok then
ret + totalNQueens' (p + 1) n (m :: acc)
else
ret)
0
totalNQueens' 0 n []