LeetCode 766. Toeplitz Matrix in F#

URL

leetcode.com/problems/toeplitz-matrix

Code

hashnode.com/draft/635f2a27b7bb8c3f4ee4325c

let isToeplitzMatrix (matrix: int [,]) : bool =
    let rec check row col v rows cols (matrix: int [,]) =
        if row >= rows || col >= cols then
            true
        else if v <> matrix.[row, col] then
            false
        else
            check (row + 1) (col + 1) v rows cols matrix

    let rows = Array2D.length1 matrix
    let cols = Array2D.length2 matrix

    let rowOK =
        seq { 0 .. (rows - 1) }
        |> Seq.forall (fun row -> check (row + 1) 1 matrix.[row, 0] rows cols matrix)

    let colOK =
        seq { 0 .. (cols - 1) }
        |> Seq.forall (fun col -> check 1 (col + 1) matrix.[0, col] rows cols matrix)

    rowOK && colOK