AdventOfCode/Day 03/Day03.cs

44 lines
1.6 KiB
C#

using System.Text;
namespace Day_03.Day_03
{
internal class Day03
{
public static string InputPath = "Day 03/day-03-input.txt";
internal static string GetPart1(byte[] data)
{
string[] rucksackData = Encoding.UTF8.GetString(data).Split(Environment.NewLine);
int priorityCount = 0;
// go throu each ruchsack
foreach (string rucksack in rucksackData.Where(x => !string.IsNullOrWhiteSpace(x)))
{
// split the data line down the middel
string rucksackOne = rucksack.Substring(0, rucksack.Length / 2);
string rucksackTwo = rucksack.Substring(rucksack.Length / 2, rucksack.Length / 2);
char prioChar = rucksackOne.Where(x => rucksackTwo.Contains(x)).First();
priorityCount += prioChar > 'Z' ? (prioChar - 'a' + 1) : (prioChar - 'A' + 27);
}
return priorityCount.ToString();
}
internal static string GetPart2(byte[] data)
{
string[] rucksackData = Encoding.UTF8.GetString(data).Split(Environment.NewLine);
int priorityCount = 0;
for (int index = 0; index < rucksackData.Length; index += 3)
{
// get the 3 ruchsacks
string[] ruchsacks = rucksackData.Skip(index).Take(3).ToArray();
char prioChar = ruchsacks[0].Where(x => ruchsacks[1].Contains(x) && ruchsacks[2].Contains(x)).First();
priorityCount += prioChar > 'Z' ? (prioChar - 'a' + 1) : (prioChar - 'A' + 27);
}
return priorityCount.ToString();
}
}
}