diff --git a/02/CubeConundrum.Tests/CubeConundrum.Tests.csproj b/02/CubeConundrum.Tests/CubeConundrum.Tests.csproj index 2346b86..26a27fd 100644 --- a/02/CubeConundrum.Tests/CubeConundrum.Tests.csproj +++ b/02/CubeConundrum.Tests/CubeConundrum.Tests.csproj @@ -27,4 +27,10 @@ + + + PreserveNewest + + + diff --git a/02/CubeConundrum.Tests/ProgramTests.cs b/02/CubeConundrum.Tests/ProgramTests.cs new file mode 100644 index 0000000..5148b3d --- /dev/null +++ b/02/CubeConundrum.Tests/ProgramTests.cs @@ -0,0 +1,11 @@ +namespace CubeConundrum.Tests; + +public class ProgramTests +{ + [Fact] + public async Task Main_GivenInput_ItShouldReturnExpectedSum() + { + var result = await Program.Main(["INPUT.txt"]); + result.Should().Be(2879); + } +} \ No newline at end of file diff --git a/02/CubeConundrum/Program.cs b/02/CubeConundrum/Program.cs index 4b32802..b1d5b08 100644 --- a/02/CubeConundrum/Program.cs +++ b/02/CubeConundrum/Program.cs @@ -4,7 +4,28 @@ public class Program { public async static Task Main(string[] args) { - return await Task.FromResult(0); + if (args.Length is 0) + { + Console.WriteLine("Please provide a path to the input file."); + return 1; + } + + if (File.Exists(args[0]) is false) + { + Console.WriteLine("The provided file does not exist."); + return 2; + } + + var puzzleParser = new PuzzleParser(); + var puzzleSolver = new PartOnePuzzleSolver(); + + var input = await File.ReadAllLinesAsync(args[0]); + var games = input.Select(puzzleParser.ParseGame); + var result = puzzleSolver.SumPossibleGameIds(games); + + Console.WriteLine($"The sum of all possible game ids is {result}."); + + return result; } }