64 lines
No EOL
1.6 KiB
C#
64 lines
No EOL
1.6 KiB
C#
namespace AdventOfCode2026;
|
|
|
|
public sealed class Day1 : Solution
|
|
{
|
|
private const int MaxArrow = 100;
|
|
public override string SolvePart1()
|
|
{
|
|
var arrow = 50;
|
|
var zeroCounter = 0;
|
|
IEnumerable<string> lines = InputReader.ReadLines(1);
|
|
foreach (var line in lines)
|
|
{
|
|
var number = int.Parse(line[1..]);
|
|
arrow = line.First() switch
|
|
{
|
|
'L' => arrow - number,
|
|
'R' => arrow + number,
|
|
var _ => arrow
|
|
};
|
|
|
|
arrow = (arrow % MaxArrow + MaxArrow) % MaxArrow;
|
|
if (arrow == 0)
|
|
{
|
|
zeroCounter++;
|
|
}
|
|
}
|
|
|
|
return zeroCounter.ToString();
|
|
}
|
|
|
|
public override string SolvePart2()
|
|
{
|
|
var arrow = 50;
|
|
var zeroCounter = 0;
|
|
IEnumerable<string> lines = InputReader.ReadLines(1);
|
|
|
|
foreach (var line in lines)
|
|
{
|
|
var number = int.Parse(line[1..]);
|
|
zeroCounter += number / MaxArrow;
|
|
var remainingNumber = number % MaxArrow;
|
|
|
|
var end = line.First() switch
|
|
{
|
|
'L' => arrow - remainingNumber,
|
|
'R' => arrow + remainingNumber,
|
|
var _ => arrow
|
|
};
|
|
|
|
if (arrow != 0 && end is > MaxArrow or < 0)
|
|
{
|
|
zeroCounter++;
|
|
}
|
|
|
|
arrow = (end % MaxArrow + MaxArrow) % MaxArrow;
|
|
if (arrow == 0)
|
|
{
|
|
zeroCounter++;
|
|
}
|
|
}
|
|
|
|
return zeroCounter.ToString();
|
|
}
|
|
} |