aoc2017/csharp/BScottDay17.cs

52 lines
1.4 KiB
C#

using System;
namespace AOC2017
{
class BScottDay17 : BScottSolution
{
public override string Name => "Day 17: Spinlock";
public override void Run()
{
int input = 355;
Console.WriteLine($"Part 1 Example Answer: {SpinlockPart1(3, 2017)}");
Console.WriteLine($"Part 1 Answer: {SpinlockPart1(input, 2017)}");
Console.WriteLine($"Part 2 Answer: {SpinlockPart2(input, 50000000)}");
}
private int SpinlockPart1(int input, int count)
{
int pos = 0, size = 1;
int[] buffer = new int[count+1];
for (int i = 0; i < count; i++)
{
pos = (pos + input + 1) % size;
// move everything over 1
for (int j = size - 1; j > pos; j--)
buffer[j + 1] = buffer[j];
// set value, increase size
buffer[pos + 1] = size++;
}
return buffer[Array.IndexOf(buffer, count) + 1];
}
private int SpinlockPart2(int input, int count)
{
int pos = 0, size = 1;
int value = 0;
for (int i = 0; i < count; i++)
{
pos = (pos + input + 1) % size;
if(pos + 1 == 1)
value = size;
size++;
}
return value;
}
}
}