Selaa lähdekoodia

Day 7 scaffold

Lukas Angerer 2 vuotta sitten
vanhempi
sitoutus
106cdaa361
4 muutettua tiedostoa jossa 56 lisäystä ja 0 poistoa
  1. 6 0
      AdventOfCode23.sln
  2. 10 0
      Day7/Day7.csproj
  3. 26 0
      Day7/Parser.cs
  4. 14 0
      Day7/Program.cs

+ 6 - 0
AdventOfCode23.sln

@@ -15,6 +15,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Day5", "Day5\Day5.csproj",
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Day6", "Day6\Day6.csproj", "{471069BF-1C57-4625-B467-4B37C99A79DD}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Day7", "Day7\Day7.csproj", "{E5E1B603-DBC7-4294-A07E-63ABB9ADD3AB}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -48,5 +50,9 @@ Global
 		{471069BF-1C57-4625-B467-4B37C99A79DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{471069BF-1C57-4625-B467-4B37C99A79DD}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{471069BF-1C57-4625-B467-4B37C99A79DD}.Release|Any CPU.Build.0 = Release|Any CPU
+		{E5E1B603-DBC7-4294-A07E-63ABB9ADD3AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{E5E1B603-DBC7-4294-A07E-63ABB9ADD3AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{E5E1B603-DBC7-4294-A07E-63ABB9ADD3AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{E5E1B603-DBC7-4294-A07E-63ABB9ADD3AB}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 EndGlobal

+ 10 - 0
Day7/Day7.csproj

@@ -0,0 +1,10 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>net8.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+</Project>

+ 26 - 0
Day7/Parser.cs

@@ -0,0 +1,26 @@
+using System.Text.RegularExpressions;
+
+namespace Day7;
+
+public partial class Parser
+{
+    [GeneratedRegex(@"\d+")]
+    private partial Regex NumberList();
+    
+    public void Parse(string inputFile)
+    {
+        using var reader = File.OpenText(inputFile);
+
+        var timesLine = reader.ReadLine()!;
+        var times = NumberList().Matches(timesLine.Substring("Time:".Length)).Cast<Match>().Select(x => long.Parse(x.Value)).ToList();
+        var durationsLine = reader.ReadLine()!;
+        var durations = NumberList().Matches(durationsLine.Substring("Distance:".Length)).Cast<Match>().Select(x => long.Parse(x.Value)).ToList();
+
+        if (times.Count != durations.Count)
+        {
+            throw new Exception("Expecting the same number of times and distances");
+        }
+
+        return times.Zip(durations).Select(item => new RaceStats(item.First, item.Second)).ToList();
+    }
+}

+ 14 - 0
Day7/Program.cs

@@ -0,0 +1,14 @@
+using Day7;
+
+if (args.Length < 1)
+{
+    Console.WriteLine("Requires 1 args: inputFileName");
+    return -1;
+}
+
+var inputFile = args[0];
+var parser = new Parser();
+
+var races = parser.Parse(inputFile);
+
+return 0;