Separate day 1 logic
This commit is contained in:
parent
5af95288a4
commit
8ccd370cf5
39
Handlers/Day01.cs
Normal file
39
Handlers/Day01.cs
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
namespace AdventOfCode2022.Handlers
|
||||||
|
{
|
||||||
|
public class Day01
|
||||||
|
{
|
||||||
|
string[] elves;
|
||||||
|
IEnumerable<int> caloriesPerElf;
|
||||||
|
|
||||||
|
public Day01()
|
||||||
|
{
|
||||||
|
var lines = System.IO.File.ReadAllText(@"./days/01/input");
|
||||||
|
elves = lines.Split("\n\n");
|
||||||
|
caloriesPerElf = elves.Select(ParseCalories);
|
||||||
|
|
||||||
|
PartA();
|
||||||
|
PartB();
|
||||||
|
}
|
||||||
|
|
||||||
|
private int ParseCalories(string elf)
|
||||||
|
{
|
||||||
|
return elf.Split("\n")
|
||||||
|
.Where(calorie => !string.IsNullOrWhiteSpace(calorie))
|
||||||
|
.Select(int.Parse)
|
||||||
|
.Sum();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void PartA()
|
||||||
|
{
|
||||||
|
var max = caloriesPerElf.Max();
|
||||||
|
Console.WriteLine($"Highest calories: {max}");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void PartB()
|
||||||
|
{
|
||||||
|
var topThree = caloriesPerElf.OrderByDescending(calories => calories).Take(3).Sum();
|
||||||
|
Console.WriteLine($"Top three calories: {topThree}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
33
Program.cs
33
Program.cs
@ -1,4 +1,5 @@
|
|||||||
namespace AdventOfCode2022
|
using AdventOfCode2022.Handlers;
|
||||||
|
namespace AdventOfCode2022
|
||||||
{
|
{
|
||||||
internal class Program
|
internal class Program
|
||||||
{
|
{
|
||||||
@ -18,35 +19,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void dayOne() {
|
static void dayOne() {
|
||||||
Console.WriteLine("Day 1");
|
new Day01();
|
||||||
// Assumes you're running the binary from the project root
|
|
||||||
var lines = System.IO.File.ReadAllText(@"./days/01/input");
|
|
||||||
var split = lines.Split("\n\n");
|
|
||||||
|
|
||||||
List<int> allCalories = new List<int>();
|
|
||||||
|
|
||||||
foreach (var elf in split) {
|
|
||||||
var rawCalories = elf.Split("\n");
|
|
||||||
|
|
||||||
int calories = 0;
|
|
||||||
foreach (var food in rawCalories) {
|
|
||||||
if (string.IsNullOrWhiteSpace(food)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
calories += int.Parse(food.Trim());
|
|
||||||
}
|
|
||||||
|
|
||||||
allCalories.Add(calories);
|
|
||||||
}
|
|
||||||
|
|
||||||
allCalories.Sort();
|
|
||||||
allCalories.Reverse();
|
|
||||||
|
|
||||||
var topThree = allCalories.Take(3).Sum();
|
|
||||||
|
|
||||||
Console.WriteLine($"Highest calories: {allCalories.First()}");
|
|
||||||
Console.WriteLine($"Top three calories: {topThree}");
|
|
||||||
PrintSeparator();
|
PrintSeparator();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user