ben
/
aoc
1
0
Fork 0
aoc/AOC2023/Day01.cs

41 lines
1.1 KiB
C#

namespace AOC2023;
public class Day01() : Day(2023, 1, "Trebuchet?!")
{
private static readonly List<string> SingleDigits =
["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
public override void ProcessInput()
{
}
public override object Part1() =>
Input.Sum(line => (line.First(char.IsDigit) - '0') * 10 + (line.Last(char.IsDigit) - '0'));
public override object Part2() =>
Input.Sum(line =>
{
List<int> digits = [];
for (var i = 0; i < line.Length; i++)
{
if (char.IsDigit(line[i]))
{
digits.Add(item: line[i] - '0');
continue;
}
foreach (var (digit, spelled) in SingleDigits.Indexed())
{
if (i + spelled.Length - 1 < line.Length && line[i..(i + spelled.Length)] == spelled)
{
digits.Add(digit);
break;
}
}
}
return digits.First() * 10 + digits.Last();
});
}