mirror of
https://github.com/parnic/advent-of-code-2022.git
synced 2025-06-16 13:40:13 -05:00
Day 4 solution
This commit is contained in:
@ -77,6 +77,8 @@
|
||||
<EmbeddedResource Include="inputs\02a.txt" />
|
||||
<None Remove="inputs\03a.txt" />
|
||||
<EmbeddedResource Include="inputs\03a.txt" />
|
||||
<None Remove="inputs\04a.txt" />
|
||||
<EmbeddedResource Include="inputs\04a.txt" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
1601
inputs/04.txt
1601
inputs/04.txt
File diff suppressed because it is too large
Load Diff
6
inputs/04a.txt
Normal file
6
inputs/04a.txt
Normal file
@ -0,0 +1,6 @@
|
||||
2-4,6-8
|
||||
2-3,4-5
|
||||
5-7,7-9
|
||||
2-8,3-7
|
||||
6-6,4-6
|
||||
2-6,4-8
|
39
src/04.cs
Normal file
39
src/04.cs
Normal file
@ -0,0 +1,39 @@
|
||||
namespace aoc2022;
|
||||
|
||||
internal class Day04 : Day
|
||||
{
|
||||
private readonly List<((int min, int max) one,(int min, int max) two)> assignmentPairs = new();
|
||||
|
||||
internal override void Parse()
|
||||
{
|
||||
foreach (var line in Util.ReadAllLines("04"))
|
||||
{
|
||||
var assignments = line.Split(',');
|
||||
var firstAssignment = assignments[0].Split('-');
|
||||
var secondAssignment = assignments[1].Split('-');
|
||||
var firstRange = (int.Parse(firstAssignment[0]), int.Parse(firstAssignment[1]));
|
||||
var secondRange = (int.Parse(secondAssignment[0]), int.Parse(secondAssignment[1]));
|
||||
assignmentPairs.Add((firstRange, secondRange));
|
||||
}
|
||||
}
|
||||
|
||||
internal override string Part1()
|
||||
{
|
||||
var overlaps = assignmentPairs.Count(x =>
|
||||
(x.one.min >= x.two.min && x.one.max <= x.two.max) ||
|
||||
(x.two.min >= x.one.min && x.two.max <= x.one.max));
|
||||
|
||||
return $"# complete overlaps: <+white>{overlaps}";
|
||||
}
|
||||
|
||||
internal override string Part2()
|
||||
{
|
||||
var overlaps = assignmentPairs.Count(x =>
|
||||
(x.one.min >= x.two.min && x.one.min <= x.two.max) ||
|
||||
(x.one.max >= x.two.min && x.one.max <= x.two.max) ||
|
||||
(x.two.min >= x.one.min && x.two.min <= x.one.max) ||
|
||||
(x.two.max >= x.one.min && x.two.max <= x.one.max));
|
||||
|
||||
return $"# partial overlaps: <+white>{overlaps}";
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user