open System.IO open System.Text.RegularExpressions let input = (File.ReadAllText "day9.txt").Trim() let exclRegex = new Regex("!.") let garbageRegex = new Regex("<.*?>") let part1 input = let stripped = garbageRegex.Replace(exclRegex.Replace(input, ""), "") |> String.filter (fun x -> x <> ',') let rec sumLevels input level acc = if input = "" then acc else if input[0] = '{' then sumLevels input[1..] (level + 1) (acc + level) else sumLevels input[1..] (level - 1) acc sumLevels stripped 1 0|> printfn "%A" let part2 input = let stripped = exclRegex.Replace(input, "") garbageRegex.Matches(stripped) |> Seq.map (fun x -> x.Groups[0].Value.Length - 2) |> Seq.sum |> printfn "%d" part1 input part2 input