From 1506d716fbcbddf6ab0cc6277ae62c6923369c9f Mon Sep 17 00:00:00 2001
From: Stevan Freeborn <65925598+StevanFreeborn@users.noreply.github.com>
Date: Fri, 8 Dec 2023 15:47:07 -0600
Subject: [PATCH 1/6] chore: scaffold for day 8 puzzle
---
08/HauntedWasteland.Tests/GlobalUsings.cs | 2 ++
.../HauntedWasteland.Tests.csproj | 30 +++++++++++++++++++
08/HauntedWasteland.Tests/UnitTest1.cs | 10 +++++++
08/HauntedWasteland/HauntedWasteland.csproj | 10 +++++++
08/HauntedWasteland/Program.cs | 2 ++
AdventOfCode2023.sln | 16 ++++++++++
6 files changed, 70 insertions(+)
create mode 100644 08/HauntedWasteland.Tests/GlobalUsings.cs
create mode 100644 08/HauntedWasteland.Tests/HauntedWasteland.Tests.csproj
create mode 100644 08/HauntedWasteland.Tests/UnitTest1.cs
create mode 100644 08/HauntedWasteland/HauntedWasteland.csproj
create mode 100644 08/HauntedWasteland/Program.cs
diff --git a/08/HauntedWasteland.Tests/GlobalUsings.cs b/08/HauntedWasteland.Tests/GlobalUsings.cs
new file mode 100644
index 0000000..7fef4b0
--- /dev/null
+++ b/08/HauntedWasteland.Tests/GlobalUsings.cs
@@ -0,0 +1,2 @@
+global using Xunit;
+global using FluentAssertions;
\ No newline at end of file
diff --git a/08/HauntedWasteland.Tests/HauntedWasteland.Tests.csproj b/08/HauntedWasteland.Tests/HauntedWasteland.Tests.csproj
new file mode 100644
index 0000000..b77aed5
--- /dev/null
+++ b/08/HauntedWasteland.Tests/HauntedWasteland.Tests.csproj
@@ -0,0 +1,30 @@
+
+
+
+ net8.0
+ enable
+ enable
+
+ false
+ true
+
+
+
+
+
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+
+
+
+
+
+
diff --git a/08/HauntedWasteland.Tests/UnitTest1.cs b/08/HauntedWasteland.Tests/UnitTest1.cs
new file mode 100644
index 0000000..a3f19b5
--- /dev/null
+++ b/08/HauntedWasteland.Tests/UnitTest1.cs
@@ -0,0 +1,10 @@
+namespace HauntedWasteland.Tests;
+
+public class UnitTest1
+{
+ [Fact]
+ public void Test1()
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/08/HauntedWasteland/HauntedWasteland.csproj b/08/HauntedWasteland/HauntedWasteland.csproj
new file mode 100644
index 0000000..2150e37
--- /dev/null
+++ b/08/HauntedWasteland/HauntedWasteland.csproj
@@ -0,0 +1,10 @@
+
+
+
+ Exe
+ net8.0
+ enable
+ enable
+
+
+
diff --git a/08/HauntedWasteland/Program.cs b/08/HauntedWasteland/Program.cs
new file mode 100644
index 0000000..3751555
--- /dev/null
+++ b/08/HauntedWasteland/Program.cs
@@ -0,0 +1,2 @@
+// See https://aka.ms/new-console-template for more information
+Console.WriteLine("Hello, World!");
diff --git a/AdventOfCode2023.sln b/AdventOfCode2023.sln
index e11e266..bc2abf3 100644
--- a/AdventOfCode2023.sln
+++ b/AdventOfCode2023.sln
@@ -45,6 +45,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CamelCards", "07\CamelCards
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CamelCards.Tests", "07\CamelCards.Tests\CamelCards.Tests.csproj", "{8F04A78E-D2E1-41AC-B43C-74608B7B4FCB}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "08", "08", "{F21CCF39-1F8A-40DA-A0E5-F1426B09BAA2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HauntedWasteland", "08\HauntedWasteland\HauntedWasteland.csproj", "{332B56C1-8ECB-4E34-9E69-54BF6A192CFB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HauntedWasteland.Tests", "08\HauntedWasteland.Tests\HauntedWasteland.Tests.csproj", "{FA8DDDD1-4DD9-4927-A9FB-C4FACDEAF901}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -110,6 +116,14 @@ Global
{8F04A78E-D2E1-41AC-B43C-74608B7B4FCB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8F04A78E-D2E1-41AC-B43C-74608B7B4FCB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8F04A78E-D2E1-41AC-B43C-74608B7B4FCB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {332B56C1-8ECB-4E34-9E69-54BF6A192CFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {332B56C1-8ECB-4E34-9E69-54BF6A192CFB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {332B56C1-8ECB-4E34-9E69-54BF6A192CFB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {332B56C1-8ECB-4E34-9E69-54BF6A192CFB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FA8DDDD1-4DD9-4927-A9FB-C4FACDEAF901}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FA8DDDD1-4DD9-4927-A9FB-C4FACDEAF901}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FA8DDDD1-4DD9-4927-A9FB-C4FACDEAF901}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FA8DDDD1-4DD9-4927-A9FB-C4FACDEAF901}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{3F8EAC09-4BC7-43AA-B72B-48DDD2710F6D} = {8C29858C-623A-461A-BF0B-254E151CD9C2}
@@ -126,5 +140,7 @@ Global
{8C89E1D0-2617-4B89-BA9C-9189FC69BC43} = {86704890-D6B8-4166-853B-F1424B8396C7}
{DC16CBE1-B1FA-4E6B-AAD8-43CDECA46659} = {7F8AD027-D8D7-407B-9E08-B363B7B34621}
{8F04A78E-D2E1-41AC-B43C-74608B7B4FCB} = {7F8AD027-D8D7-407B-9E08-B363B7B34621}
+ {332B56C1-8ECB-4E34-9E69-54BF6A192CFB} = {F21CCF39-1F8A-40DA-A0E5-F1426B09BAA2}
+ {FA8DDDD1-4DD9-4927-A9FB-C4FACDEAF901} = {F21CCF39-1F8A-40DA-A0E5-F1426B09BAA2}
EndGlobalSection
EndGlobal
From b05f886666d272bb03e1dbb5e6169819ee35d63d Mon Sep 17 00:00:00 2001
From: Stevan Freeborn <65925598+StevanFreeborn@users.noreply.github.com>
Date: Fri, 8 Dec 2023 21:46:28 -0600
Subject: [PATCH 2/6] feat: solve part 1
---
01/Trebuchet/Program.cs | 11 ++-
08/HauntedWasteland.Tests/MapTests.cs | 65 +++++++++++++++
08/HauntedWasteland.Tests/NodeTests.cs | 54 +++++++++++++
08/HauntedWasteland.Tests/UnitTest1.cs | 10 ---
08/HauntedWasteland/Program.cs | 108 ++++++++++++++++++++++++-
5 files changed, 234 insertions(+), 14 deletions(-)
create mode 100644 08/HauntedWasteland.Tests/MapTests.cs
create mode 100644 08/HauntedWasteland.Tests/NodeTests.cs
delete mode 100644 08/HauntedWasteland.Tests/UnitTest1.cs
diff --git a/01/Trebuchet/Program.cs b/01/Trebuchet/Program.cs
index 46e5e1d..32d2d3f 100644
--- a/01/Trebuchet/Program.cs
+++ b/01/Trebuchet/Program.cs
@@ -1,4 +1,5 @@
-using System.Text.RegularExpressions;
+using System.Diagnostics;
+using System.Text.RegularExpressions;
namespace Trebuchet;
@@ -23,9 +24,15 @@ public class Program
: new PartOnePuzzleSolver();
var input = await File.ReadAllLinesAsync(args[0]);
+
+ var stopwatch = new Stopwatch();
+ stopwatch.Start();
+
var result = puzzleSolver.SumCalibrationValues(input);
- Console.WriteLine($"The sum of all calibration values is {result}.");
+ stopwatch.Stop();
+
+ Console.WriteLine($"The sum of all calibration values is {result}. ({stopwatch.ElapsedMilliseconds}ms)");
return result;
}
diff --git a/08/HauntedWasteland.Tests/MapTests.cs b/08/HauntedWasteland.Tests/MapTests.cs
new file mode 100644
index 0000000..6373d76
--- /dev/null
+++ b/08/HauntedWasteland.Tests/MapTests.cs
@@ -0,0 +1,65 @@
+namespace HauntedWasteland.Tests;
+
+public class MapTests
+{
+ [Theory]
+ [MemberData(nameof(TestData.ParseMapTestData), MemberType = typeof(TestData))]
+ public void Parse_WhenGivenStringArray_ItShouldReturnMap(string[] input, Map expected)
+ {
+ Map.Parse(input).Should().BeEquivalentTo(expected);
+ }
+
+ [Theory]
+ [MemberData(nameof(TestData.CountTurnsTestData), MemberType = typeof(TestData))]
+ public void CountStepsToZ_WhenGivenMap_ItShouldReturnNumberOfSteps(string[] input, int expected)
+ {
+ Map.Parse(input).CountStepsToZ().Should().Be(expected);
+ }
+
+ public static class TestData
+ {
+ private static readonly string[] MapInput =
+ [
+ "RL",
+ "",
+ "AAA = (BBB, CCC)",
+ "BBB = (DDD, EEE)",
+ "CCC = (ZZZ, GGG)",
+ "DDD = (DDD, DDD)",
+ "EEE = (EEE, EEE)",
+ "GGG = (GGG, GGG)",
+ "ZZZ = (ZZZ, ZZZ)",
+ ];
+
+ public static IEnumerable