Skip to content

Instantly share code, notes, and snippets.

@jbevain
Created December 7, 2024 22:54
Show Gist options
  • Save jbevain/cdb474e3167d4437d004c90094c32691 to your computer and use it in GitHub Desktop.
Save jbevain/cdb474e3167d4437d004c90094c32691 to your computer and use it in GitHub Desktop.
long sum = 0;
var reader = new StringReader(input);
while (reader.ReadLine() is string line)
{
var numbers = line.Split([' ', ':'], StringSplitOptions.RemoveEmptyEntries).Select(long.Parse).ToArray();
if (numbers is [var test, ..var n] && SolveEquation(test, n))
{
sum += test;
}
}
Console.WriteLine(sum);
static bool SolveEquation(long test, ReadOnlySpan<long> numbers)
{
return numbers switch
{
[var n] => n == test,
[var a, var b, .. var rest] => SolveEquation(test, [a + b, .. rest])
|| SolveEquation(test, [a * b, .. rest])
|| SolveEquation(test, [long.Parse(a.ToString() + b.ToString()), .. rest]),
_ => false
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment