home · login to get plonkin'

Day03_MullItOver.cs

@benharri.org · 29d ago · c# · 38 loc · raw · 0 comments

1namespace Solutions._2024;23/// <summary>4/// Day 3: <a href="https://adventofcode.com/2024/day/3"/>5/// </summary>6public partial class Day03MullItOver() : Day(2024, 3, "Mull It Over")7{8    private string _input = "";910    [GeneratedRegex(@"mul\((\d{1,3}),(\d{1,3})\)")]11    private static partial Regex MulRegex();1213    [GeneratedRegex(@"don't\(\)|do\(\)|mul\((\d{1,3}),(\d{1,3})\)")]14    private static partial Regex DoDontRegex();1516    public override void ProcessInput() => _input = Input.Join();1718    public override object Part1() =>19        MulRegex().Matches(_input)20            .Sum(m => int.Parse(m.Groups[1].ValueSpan) * int.Parse(m.Groups[2].ValueSpan));2122    public override object Part2()23    {24        var sum = 0;25        var enabled = true;2627        foreach (Match m in DoDontRegex().Matches(_input))28        {29            if (m.ValueSpan is "do()") enabled = true;30            if (m.ValueSpan is "don't()") enabled = false;31            if (enabled && m.ValueSpan.StartsWith("mul("))32                sum += int.Parse(m.Groups[1].ValueSpan) * int.Parse(m.Groups[2].ValueSpan);33        }3435        return sum;36    }37}38

login to post a comment