WIP AdventOfCode 2023 Day24 Part2

This commit is contained in:
2023-12-25 05:13:36 +01:00
parent 65a23d1cf7
commit 68a494c929
2 changed files with 356 additions and 21 deletions

View File

@@ -10,7 +10,7 @@ namespace AdventOfCode2023.Tests;
public class Day24_Tests
{
private string[] _example1 = {
private readonly string[] _example1 = {
"19, 13, 30 @ -2, 1, -2",
"18, 19, 22 @ -1, -1, -2",
"20, 25, 34 @ -2, -2, -4",
@@ -28,6 +28,35 @@ public class Day24_Tests
Assert.Equal("2", result);
}
[Fact]
public void ResolvePart2__Example1()
{
Day24 day = new();
string result = day.ResolvePart2(_example1);
Assert.Equal("47", result);
}
private readonly string[] _example2 = {
"19, 13, 30 @ -2, 1, -2",
"18, 19, 22 @ -1, -1, -2",
"20, 25, 34 @ -2, -2, -4",
"12, 31, 28 @ -1, -2, -1",
"20, 19, 15 @ 1, -5, -3",
"24, 13, 10 @ -3, 1, 2",
};
[Fact]
public void ResolvePart2__Example2()
{
Day24 day = new();
string result = day.ResolvePart2(_example2);
Assert.Equal("47", result);
}
[Fact]
public void Hail_Intersect2D__Examples1()
{
@@ -37,35 +66,66 @@ public class Day24_Tests
Day24.Hail hailD = new("12, 31, 28 @ -1, -2, -1");
Day24.Hail hailE = new("20, 19, 15 @ 1, -5, -3");
(bool intersect_A_B, _, _, _) = hailA.Intersect2D(hailB);
(bool intersect_A_B, _, _) = hailA.Intersect2D(hailB);
Assert.True(intersect_A_B);
(bool intersect_A_C, _, _, _) = hailA.Intersect2D(hailC);
(bool intersect_A_C, _, _) = hailA.Intersect2D(hailC);
Assert.True(intersect_A_C);
(bool intersect_A_D, _, _, _) = hailA.Intersect2D(hailD);
(bool intersect_A_D, _, _) = hailA.Intersect2D(hailD);
Assert.True(intersect_A_D);
(bool intersect_A_E, _, _, _) = hailA.Intersect2D(hailE);
(bool intersect_A_E, _, _) = hailA.Intersect2D(hailE);
Assert.True(intersect_A_E);
(bool intersect_B_C, _, _, _) = hailB.Intersect2D(hailC);
(bool intersect_B_C, _, _) = hailB.Intersect2D(hailC);
Assert.False(intersect_B_C);
(bool intersect_B_D, _, _, _) = hailB.Intersect2D(hailD);
(bool intersect_B_D, _, _) = hailB.Intersect2D(hailD);
Assert.True(intersect_B_D);
(bool intersect_B_E, _, _, _) = hailB.Intersect2D(hailE);
(bool intersect_B_E, _, _) = hailB.Intersect2D(hailE);
Assert.True(intersect_B_E);
(bool intersect_C_D, _, _, _) = hailC.Intersect2D(hailD);
(bool intersect_C_D, _, _) = hailC.Intersect2D(hailD);
Assert.True(intersect_C_D);
(bool intersect_C_E, _, _, _) = hailC.Intersect2D(hailE);
(bool intersect_C_E, _, _) = hailC.Intersect2D(hailE);
Assert.True(intersect_C_E);
(bool intersect_D_E, _, _, _) = hailD.Intersect2D(hailE);
(bool intersect_D_E, _, _) = hailD.Intersect2D(hailE);
Assert.True(intersect_D_E);
}
[Fact]
public void Hail_Intersect3D__Examples1()
{
Day24.Hail rock = new("24, 13, 10 @ -3, 1, 2");
Day24.Hail hailA = new("19, 13, 30 @ -2, 1, -2");
Day24.Hail hailB = new("18, 19, 22 @ -1, -1, -2");
Day24.Hail hailC = new("20, 25, 34 @ -2, -2, -4");
Day24.Hail hailD = new("12, 31, 28 @ -1, -2, -1");
Day24.Hail hailE = new("20, 19, 15 @ 1, -5, -3");
(bool intersect_A, double t_A, _) = rock.Intersect3D(hailA);
Assert.True(intersect_A);
Assert.Equal(5, t_A);
(bool intersect_B, double t_B, _) = rock.Intersect3D(hailB);
Assert.True(intersect_B);
Assert.Equal(3, t_B);
(bool intersect_C, double t_C, _) = rock.Intersect3D(hailC);
Assert.True(intersect_C);
Assert.Equal(4, t_C);
(bool intersect_D, double t_D, _) = rock.Intersect3D(hailD);
Assert.True(intersect_D);
Assert.Equal(6, t_D);
(bool intersect_E, double t_E, _) = rock.Intersect3D(hailE);
Assert.True(intersect_E);
Assert.Equal(1, t_E);
}
}