aoc2018/AoC2018/Solutions/Day1Solution.cs

63 lines
1.6 KiB
C#
Raw Normal View History

2018-12-08 19:12:28 -06:00
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AoC2018.Solutions
{
public class Day1Solution : Solution
{
public override string Title => "Chronal Calibration";
public override int Day => 1;
public override void Run()
{
string[] input = File.ReadAllLines(Path.Combine("Input", "Day1Input.txt"));
Console.WriteLine($"Part 1 Result: {CalculatePart1(input)}");
Console.WriteLine($"Part 2 Result: {CalculatePart2(input)}");
}
public int CalculatePart1(string[] input)
{
int sum = 0;
2018-12-08 19:12:28 -06:00
for (var i = 0; i < input.Length; i++)
sum += int.Parse(input[i]);
2018-12-08 19:12:28 -06:00
return sum;
}
public int CalculatePart2(string[] input)
{
Dictionary<int, int> frequencyOccurrences = new Dictionary<int, int>();
int sum = 0, result = 0;
bool foundResult = false;
frequencyOccurrences.Add(0, 1);
while (!foundResult)
2018-12-08 19:12:28 -06:00
{
foreach (var s in input)
2018-12-08 19:12:28 -06:00
{
sum += int.Parse(s);
2018-12-08 19:12:28 -06:00
if (!frequencyOccurrences.ContainsKey(sum))
frequencyOccurrences.Add(sum, 0);
2018-12-08 19:12:28 -06:00
if (++frequencyOccurrences[sum] > 1)
2018-12-08 19:12:28 -06:00
{
foundResult = true;
result = sum;
2018-12-08 19:12:28 -06:00
break;
}
}
}
return result;
2018-12-08 19:12:28 -06:00
}
}
}