blob: 541a0b4e31617807533ce2c4ff1ea7ba1d8503a9 (
plain) (
tree)
|
|
module Solutions.Day3
open System.IO
let lines = File.ReadLines("inputs/day3.txt")
let rucksacks = lines
|> Seq.map (fun x -> (Set.ofSeq x[0..x.Length / 2 - 1], Set.ofSeq x[x.Length/2..x.Length]))
let groups = lines
|> Seq.map Set.ofSeq
|> Seq.splitInto (Seq.length lines / 3)
let prioritize ch =
match ch with
| x when 'a' <= x && x <= 'z' -> int x - int 'a' + 1
| x when 'A' <= x && x <= 'Z' -> int x - int 'A' + 27
| _ -> 0
// extract the single element from the set with maxElement
let part1 () = rucksacks
|> Seq.map ((fun (x, y) -> Set.intersect x y |> Set.maxElement) >> prioritize)
|> Seq.sum
let part2 () = groups
|> Seq.map (Set.intersectMany >> Set.maxElement >> prioritize)
|> Seq.sum
|