summary refs log blame commit diff stats
path: root/day9.fsx
blob: 61cba2abffa504d7023a205529e9ddd6a3e5fb7a (plain) (tree)
























                                                                                                                
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