URL
Pascal's Triangle - LeetCode
Code
https://github.com/syohex/dotnet-study/tree/master/fsharp/leetcode/challenge/202309/pascals_triangle/main.fsx
let generate (numRows: int) : int list list =
let rec generate' i numRows (prev: int[]) acc =
if i >= numRows then
List.rev acc
else
let v =
seq { 0..i }
|> Seq.fold
(fun acc n ->
if n = 0 then prev.[0] :: acc
elif n = i then prev.[n - 1] :: acc
else (prev.[n - 1] + prev.[n]) :: acc)
[]
|> List.rev
generate' (i + 1) numRows (List.toArray v) (v :: acc)
generate' 1 numRows [| 1 |] [ [ 1 ] ]