ben
/
aoc
1
0
Fork 0

gonna break the unit tests...
continuous-integration/drone/push Build is failing Details

2015 day 12 p1 works but part 2 is over counting
This commit is contained in:
Ben Harris 2022-12-04 15:05:16 -05:00
parent a5beb2c1f0
commit 0caf534d83
2 changed files with 38 additions and 3 deletions

View File

@ -17,6 +17,7 @@ public class Test2015
[DataRow(typeof(Day09), "117", "909")]
[DataRow(typeof(Day10), "492982", "6989950")]
[DataRow(typeof(Day11), "hepxxyzz", "heqaabcc")]
[DataRow(typeof(Day12), "111754", "")]
public void CheckAllDays(Type dayType, string part1, string part2)
{
Common.CheckDay(dayType, part1, part2);

View File

@ -1,15 +1,49 @@
using System.Text.Json;
namespace AOC2015;
/// <summary>
/// Day 12: <a href="https://adventofcode.com/2015/day/12"/>
/// </summary>
public sealed class Day12 : Day
public sealed partial class Day12 : Day
{
public Day12() : base(2015, 12, "JSAbacusFramework.io")
{
}
[GeneratedRegex(@"-?\d+")]
private static partial Regex Digits();
public override object Part1() => "";
public override object Part1() =>
Digits().Matches(Input.First()).Sum(n => int.Parse(n.Value));
public override object Part2() => "";
public override object Part2()
{
var reader = new Utf8JsonReader(File.ReadAllBytes(FileName));
var sum = 0;
bool redObject = false, insideObject = false;
while (reader.Read())
{
switch (reader.TokenType)
{
case JsonTokenType.StartObject:
insideObject = true;
break;
case JsonTokenType.EndObject:
insideObject = false;
redObject = false;
break;
case JsonTokenType.String:
if (insideObject && reader.GetString()! == "red")
redObject = true;
break;
case JsonTokenType.Number:
if (!redObject) sum += reader.GetInt32();
break;
}
}
return sum;
}
}