LeetCode 1282. Group the People Given the Group Size They Belong To in F#

URL

Group the People Given the Group Size They Belong To - LeetCode

Code

https://github.com/syohex/dotnet-study/tree/master/fsharp/leetcode/problems/1282/main.fsx

let groupThePeople (groupSizes: int list) : int list list =
    groupSizes
    |> List.indexed
    |> List.fold
        (fun acc (i, group) ->
            match Map.tryFind group acc with
            | Some(v) -> Map.add group (i :: v) acc
            | None -> Map.add group [ i ] acc)
        Map.empty
    |> Map.fold
        (fun acc k v ->
            let len = List.length v
            let chunks = List.splitInto (len / k) (List.rev v)
            chunks @ acc)
        []
    |> List.rev