AdventOfCode/Year2022/Day4.cs

51 lines
1.4 KiB
C#
Raw Normal View History

2023-06-07 22:28:51 +00:00
namespace AdventOfCode.Year2022;
public class Day4
{
public Day4()
{
2023-06-24 21:26:39 +00:00
var lines = File.ReadAllLines("inputs/day4.txt");
var containedCount = 0;
var intersectedCount = 0;
foreach (var line in lines)
2023-06-07 22:28:51 +00:00
{
if (IsContained(line))
containedCount++;
if (IsIntersected(line))
intersectedCount++;
}
2023-06-24 21:26:39 +00:00
Console.WriteLine($@"
Day4 Solution
Part1 Result: {containedCount}
Part2 Result: {intersectedCount}
=============================");
2023-06-07 22:28:51 +00:00
}
2023-06-07 23:12:01 +00:00
private static bool IsContained(string line)
2023-06-07 22:28:51 +00:00
{
2023-06-24 21:26:39 +00:00
var limits = GetLimits(line);
2023-06-07 22:28:51 +00:00
return (limits[0][0] >= limits[1][0] && limits[0][1] <= limits[1][1])
2023-06-24 21:26:39 +00:00
|| (limits[1][0] >= limits[0][0] && limits[1][1] <= limits[0][1]);
2023-06-07 22:28:51 +00:00
}
2023-06-07 23:12:01 +00:00
private static bool IsIntersected(string line)
2023-06-07 22:28:51 +00:00
{
2023-06-24 21:26:39 +00:00
var limits = GetLimits(line);
2023-06-07 22:28:51 +00:00
return (limits[0][1] >= limits[1][0] && limits[0][0] <= limits[1][1])
|| (limits[1][1] >= limits[0][0] && limits[1][0] <= limits[0][1]);
}
2023-06-07 23:12:01 +00:00
private static int[][] GetLimits(string line)
2023-06-07 22:28:51 +00:00
{
2023-06-24 21:26:39 +00:00
var pair = line.Split(",");
var pair1 = pair[0].Split("-");
var pair2 = pair[1].Split("-");
return new[]
2023-06-07 22:28:51 +00:00
{
2023-06-24 21:26:39 +00:00
new[] { Convert.ToInt32(pair1[0]), Convert.ToInt32(pair1[1]) },
new[] { Convert.ToInt32(pair2[0]), Convert.ToInt32(pair2[1]) }
2023-06-07 22:28:51 +00:00
};
}
}