35 lines
1.1 KiB
C#
35 lines
1.1 KiB
C#
namespace _2024;
|
|
|
|
public class Day01 : ISolution {
|
|
public void Run() {
|
|
// Read all lines from the input file
|
|
var lines = File.ReadAllLines("input/01");
|
|
|
|
// Two lists to hold the first and second integers per line
|
|
var left = new List<int>();
|
|
var right = new List<int>();
|
|
|
|
foreach (var line in lines) {
|
|
if (string.IsNullOrWhiteSpace(line)) continue;
|
|
|
|
var parts = line.Split(' ', StringSplitOptions.RemoveEmptyEntries);
|
|
if (parts.Length < 2) {
|
|
Console.WriteLine("Bad parse");
|
|
return;
|
|
}
|
|
|
|
if (int.TryParse(parts[0], out var a) && int.TryParse(parts[1], out var b)) {
|
|
left.Add(a);
|
|
right.Add(b);
|
|
}
|
|
}
|
|
|
|
var leftSorted = left.OrderBy(x => x).ToList();
|
|
var rightSorted = right.OrderBy(x => x).ToList();
|
|
Console.WriteLine(leftSorted.Select((t, i) => Math.Abs(t - rightSorted[i])).Sum());
|
|
|
|
Console.WriteLine(left.Sum(i => right.Count(x => x == i) * i));
|
|
}
|
|
}
|
|
|