LeetCode 1220. Count Vowels Permutation in F#

URL

leetcode.com/problems/count-vowels-permutat..

Code

github.com/syohex/dotnet-study/blob/master/..

let countVowelPermutation (n: int) : int =
    let dp = Array2D.init 5 n (fun _ _ -> 0L)

    for i in 0..4 do
        dp.[i, 0] <- 1L

    let MOD = 1_000_000_007L

    for i in 1 .. (n - 1) do
        dp.[0, i] <- dp.[1, i - 1]
        dp.[1, i] <- (dp.[0, i - 1] + dp.[2, i - 1]) % MOD

        dp.[2, i] <-
            (dp.[0, i - 1]
             + dp.[1, i - 1]
             + dp.[3, i - 1]
             + dp[4, i - 1]) % MOD

        dp.[3, i] <- (dp.[2, i - 1] + dp.[4, i - 1]) % MOD
        dp.[4, i] <- dp.[0, i - 1]

    seq { 0..4 }
    |> Seq.fold (fun acc i -> (acc + dp.[i, n - 1]) % MOD) 0L
    |> int