diff options
author | Brian Chu <brianmchu42@gmail.com> | 2021-12-30 15:11:21 -0800 |
---|---|---|
committer | Brian Chu <brianmchu42@gmail.com> | 2021-12-30 15:11:21 -0800 |
commit | e7085453864431ace3ad8f3123b259ed0829ae74 (patch) | |
tree | 2ef1fbb0e9d02fc934b5e09d96dd187f3e371ea6 /day24.fsx | |
download | AdventOfCode2015-e7085453864431ace3ad8f3123b259ed0829ae74.tar.gz |
all solutions for 2015 main
Diffstat (limited to 'day24.fsx')
-rw-r--r-- | day24.fsx | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/day24.fsx b/day24.fsx new file mode 100644 index 0000000..a328dd9 --- /dev/null +++ b/day24.fsx @@ -0,0 +1,19 @@ +open System + +let rec comb n l = + match n, l with + | 0, _ -> [[]] + | _, [] -> [] + | k, (x::xs) -> List.map ((@) [x]) (comb (k-1) xs) @ comb k xs + +let minQE (nums: int list) grps = + [2..(nums.Length/grps - 1)] + |> List.map (fun n -> comb n nums) |> List.concat + |> List.filter (fun cmb -> cmb |> List.sum = (nums |> List.sum) / grps) + |> Seq.groupBy (fun cmb -> cmb.Length) + |> Seq.minBy (fun (len,_) -> len) |> snd + |> Seq.map (fun cmb -> cmb |> List.map int64 |> List.reduce (*)) |> Seq.min + +let nums = IO.File.ReadAllLines "day24.txt" |> Array.map Int32.Parse |> Array.toList +minQE nums 3 |> printfn "3 Groups: %A" +minQE nums 4 |> printfn "4 Groups: %A" |