From 27247c645ee8a803bb6d2091128a832cd66d7634 Mon Sep 17 00:00:00 2001 From: Rob Date: Sat, 2 Dec 2023 22:50:40 +0100 Subject: [PATCH] moved code, started new core lib for main used items like string manipulation and data reading/parsing --- .../AdventOfCode.Runner.csproj | 2 +- Advend Of Code Runner/Program.cs | 5 +- .../2022/Day 01/Day01Part1.cs | 3 +- .../2022/Day 01/Day01Part2.cs | 4 +- .../2022/Day 02/Day02Part1.cs | 7 ++- .../2022/Day 02/Day02Part2.cs | 7 ++- .../2022/Day 02/GameRules.cs | 2 +- .../2022/Day 03/Day03Part1.cs | 4 +- .../2022/Day 03/Day03Part2.cs | 4 +- .../2022/Day 04/Day04Part1.cs | 4 +- .../2022/Day 04/Day04Part2.cs | 4 +- .../2022/Day 05/CraneWork.cs | 2 +- .../2022/Day 05/Day05Part1.cs | 7 ++- .../2022/Day 05/Day05Part2.cs | 7 ++- .../2022/Day 06/Day06Part1.cs | 4 +- .../2022/Day 06/Day06Part2.cs | 4 +- .../2022/Day 07/Day07Part1.cs | 7 ++- .../2022/Day 07/Day07Part2.cs | 7 ++- .../2022/Day 07/DirectoryManager.cs | 2 +- .../2022/Day 08/Day08Part1.cs | 4 +- .../2022/Day 08/Day08Part2.cs | 4 +- .../2022/Day 09/Day09Part1.cs | 7 ++- .../2022/Day 09/Day09Part2.cs | 7 ++- .../2022/Day 09/RopeWalker.cs | 2 +- .../2022/Day 10/Day10Part1.cs | 4 +- .../2022/Day 10/Day10Part2.cs | 4 +- .../2022/Day 11/Day11Part1.cs | 7 ++- .../2022/Day 11/Day11Part2.cs | 7 ++- Advent Of Code Library/2022/Day 11/Monkey.cs | 2 +- .../2022/Day 12/Day12Part1.cs | 4 +- .../2022/Day 12/Day12Part2.cs | 4 +- Advent Of Code Library/2022/Day 12/Map.cs | 2 +- .../2023/Day 01/Day01Part1.cs | 9 ++-- .../2023/Day 01/Day01Part2.cs | 7 ++- .../2023/Day 02/Day02Part1.cs | 7 ++- .../2023/Day 02/Day02Part2.cs | 7 ++- .../AdventOfCode.Solutions.csproj | 10 ++-- Advent Of Code Library/Usings.cs | 1 + Advent Of Code.sln | 8 ++- AdventOfCode.Code/AdventOfCode.Core.csproj | 9 ++++ AdventOfCode.Code/InputReader.cs | 52 +++++++++++++++++++ .../Shared/A-Star/AStarGrid.cs | 2 +- .../Shared/A-Star/AStarNode.cs | 2 +- .../Shared/Answerable.cs | 6 +-- .../Shared/AnswerableListBuilder.cs | 2 +- .../Shared/Grid.cs | 2 +- .../Shared/Node.cs | 2 +- 47 files changed, 152 insertions(+), 118 deletions(-) create mode 100644 Advent Of Code Library/Usings.cs create mode 100644 AdventOfCode.Code/AdventOfCode.Core.csproj create mode 100644 AdventOfCode.Code/InputReader.cs rename {Advent Of Code Library => AdventOfCode.Code}/Shared/A-Star/AStarGrid.cs (96%) rename {Advent Of Code Library => AdventOfCode.Code}/Shared/A-Star/AStarNode.cs (95%) rename {Advent Of Code Library => AdventOfCode.Code}/Shared/Answerable.cs (71%) rename {Advent Of Code Library => AdventOfCode.Code}/Shared/AnswerableListBuilder.cs (95%) rename {Advent Of Code Library => AdventOfCode.Code}/Shared/Grid.cs (96%) rename {Advent Of Code Library => AdventOfCode.Code}/Shared/Node.cs (93%) diff --git a/Advend Of Code Runner/AdventOfCode.Runner.csproj b/Advend Of Code Runner/AdventOfCode.Runner.csproj index b01e159..70f62d0 100644 --- a/Advend Of Code Runner/AdventOfCode.Runner.csproj +++ b/Advend Of Code Runner/AdventOfCode.Runner.csproj @@ -2,7 +2,7 @@ Exe - net6.0 + net8.0 AdventOFCodeRunner enable enable diff --git a/Advend Of Code Runner/Program.cs b/Advend Of Code Runner/Program.cs index 6e688df..b55dc20 100644 --- a/Advend Of Code Runner/Program.cs +++ b/Advend Of Code Runner/Program.cs @@ -1,7 +1,7 @@ using System.Text; using AdventOfCodeLibrary._2023; -using AdventOfCodeLibrary.Shared; +using AdventOfCode.Core.Shared; string _demoData = @"Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue @@ -10,6 +10,9 @@ Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green"; Answerable answerable = new Day02Part2(); + +//FileStream stream = new FileStream(answerable.DefaultInputFile, new FileStreamOptions { Mode = FileMode.Open, Access = FileAccess.Read, Options = FileOptions.Asynchronous }); + byte[] dataArray = File.ReadAllBytes(answerable.DefaultInputFile); //dataArray = Encoding.UTF8.GetBytes(_demoData); diff --git a/Advent Of Code Library/2022/Day 01/Day01Part1.cs b/Advent Of Code Library/2022/Day 01/Day01Part1.cs index 7e4ae7e..54fe544 100644 --- a/Advent Of Code Library/2022/Day 01/Day01Part1.cs +++ b/Advent Of Code Library/2022/Day 01/Day01Part1.cs @@ -1,6 +1,5 @@ -namespace AdventOfCodeLibrary._2022 +namespace AdventOfCode.Solutions._2022 { - using AdventOfCodeLibrary.Shared; public class Day01Part1 : Answerable { diff --git a/Advent Of Code Library/2022/Day 01/Day01Part2.cs b/Advent Of Code Library/2022/Day 01/Day01Part2.cs index f501bf8..d579ba3 100644 --- a/Advent Of Code Library/2022/Day 01/Day01Part2.cs +++ b/Advent Of Code Library/2022/Day 01/Day01Part2.cs @@ -1,7 +1,5 @@ -namespace AdventOfCodeLibrary._2022 +namespace AdventOfCode.Solutions._2022 { - using AdventOfCodeLibrary.Shared; - public class Day01Part2 : Answerable { public override int Year { get; set; } = 2022; diff --git a/Advent Of Code Library/2022/Day 02/Day02Part1.cs b/Advent Of Code Library/2022/Day 02/Day02Part1.cs index 0d45083..573745b 100644 --- a/Advent Of Code Library/2022/Day 02/Day02Part1.cs +++ b/Advent Of Code Library/2022/Day 02/Day02Part1.cs @@ -1,8 +1,7 @@ -namespace AdventOfCodeLibrary._2022 -{ - using AdventOfCodeLibrary._2022.Day02; - using AdventOfCodeLibrary.Shared; +using AdventOfCode.Solutions._2022.Day02; +namespace AdventOfCode.Solutions._2022 +{ public class Day02Part1 : Answerable { public override int Year { get; set; } = 2022; diff --git a/Advent Of Code Library/2022/Day 02/Day02Part2.cs b/Advent Of Code Library/2022/Day 02/Day02Part2.cs index 0ad0e1f..9ea7b4e 100644 --- a/Advent Of Code Library/2022/Day 02/Day02Part2.cs +++ b/Advent Of Code Library/2022/Day 02/Day02Part2.cs @@ -1,8 +1,7 @@ -namespace AdventOfCodeLibrary._2022 -{ - using AdventOfCodeLibrary._2022.Day02; - using AdventOfCodeLibrary.Shared; +using AdventOfCode.Solutions._2022.Day02; +namespace AdventOfCode.Solutions._2022 +{ public class Day02Part2 : Answerable { public override int Year { get; set; } = 2022; diff --git a/Advent Of Code Library/2022/Day 02/GameRules.cs b/Advent Of Code Library/2022/Day 02/GameRules.cs index fef3eca..aea67bd 100644 --- a/Advent Of Code Library/2022/Day 02/GameRules.cs +++ b/Advent Of Code Library/2022/Day 02/GameRules.cs @@ -1,4 +1,4 @@ -namespace AdventOfCodeLibrary._2022.Day02 +namespace AdventOfCode.Solutions._2022.Day02 { internal class GameRules { diff --git a/Advent Of Code Library/2022/Day 03/Day03Part1.cs b/Advent Of Code Library/2022/Day 03/Day03Part1.cs index 17dae6e..fce2e4c 100644 --- a/Advent Of Code Library/2022/Day 03/Day03Part1.cs +++ b/Advent Of Code Library/2022/Day 03/Day03Part1.cs @@ -1,7 +1,5 @@ -namespace AdventOfCodeLibrary._2022 +namespace AdventOfCode.Solutions._2022 { - using AdventOfCodeLibrary.Shared; - public class Day03Part1 : Answerable { public override int Year { get; set; } = 2022; diff --git a/Advent Of Code Library/2022/Day 03/Day03Part2.cs b/Advent Of Code Library/2022/Day 03/Day03Part2.cs index 15e170d..9bfc886 100644 --- a/Advent Of Code Library/2022/Day 03/Day03Part2.cs +++ b/Advent Of Code Library/2022/Day 03/Day03Part2.cs @@ -1,7 +1,5 @@ -namespace AdventOfCodeLibrary._2022 +namespace AdventOfCode.Solutions._2022 { - using AdventOfCodeLibrary.Shared; - public class Day03Part2 : Answerable { public override int Year { get; set; } = 2022; diff --git a/Advent Of Code Library/2022/Day 04/Day04Part1.cs b/Advent Of Code Library/2022/Day 04/Day04Part1.cs index 3eb6731..6fde658 100644 --- a/Advent Of Code Library/2022/Day 04/Day04Part1.cs +++ b/Advent Of Code Library/2022/Day 04/Day04Part1.cs @@ -1,7 +1,5 @@ -namespace AdventOfCodeLibrary._2022 +namespace AdventOfCode.Solutions._2022 { - using AdventOfCodeLibrary.Shared; - public class Day04Part1 : Answerable { public override int Year { get; set; } = 2022; diff --git a/Advent Of Code Library/2022/Day 04/Day04Part2.cs b/Advent Of Code Library/2022/Day 04/Day04Part2.cs index f1acb02..a9f6a7d 100644 --- a/Advent Of Code Library/2022/Day 04/Day04Part2.cs +++ b/Advent Of Code Library/2022/Day 04/Day04Part2.cs @@ -1,7 +1,5 @@ -namespace AdventOfCodeLibrary._2022 +namespace AdventOfCode.Solutions._2022 { - using AdventOfCodeLibrary.Shared; - public class Day04Part2 : Answerable { public override int Year { get; set; } = 2022; diff --git a/Advent Of Code Library/2022/Day 05/CraneWork.cs b/Advent Of Code Library/2022/Day 05/CraneWork.cs index 838df3e..8960705 100644 --- a/Advent Of Code Library/2022/Day 05/CraneWork.cs +++ b/Advent Of Code Library/2022/Day 05/CraneWork.cs @@ -1,4 +1,4 @@ -namespace AdventOfCodeLibrary._2022.Day_05 +namespace AdventOfCode.Solutions._2022.Day_05 { internal class CraneWork { diff --git a/Advent Of Code Library/2022/Day 05/Day05Part1.cs b/Advent Of Code Library/2022/Day 05/Day05Part1.cs index 8a65552..7a1b0d5 100644 --- a/Advent Of Code Library/2022/Day 05/Day05Part1.cs +++ b/Advent Of Code Library/2022/Day 05/Day05Part1.cs @@ -1,8 +1,7 @@ -namespace AdventOfCodeLibrary._2022 -{ - using AdventOfCodeLibrary._2022.Day_05; - using AdventOfCodeLibrary.Shared; +using AdventOfCode.Solutions._2022.Day_05; +namespace AdventOfCode.Solutions._2022 +{ public class Day05Part1 : Answerable { public override int Year { get; set; } = 2022; diff --git a/Advent Of Code Library/2022/Day 05/Day05Part2.cs b/Advent Of Code Library/2022/Day 05/Day05Part2.cs index d57d3e1..5175134 100644 --- a/Advent Of Code Library/2022/Day 05/Day05Part2.cs +++ b/Advent Of Code Library/2022/Day 05/Day05Part2.cs @@ -1,8 +1,7 @@ -namespace AdventOfCodeLibrary._2022 -{ - using AdventOfCodeLibrary._2022.Day_05; - using AdventOfCodeLibrary.Shared; +using AdventOfCode.Solutions._2022.Day_05; +namespace AdventOfCode.Solutions._2022 +{ public class Day05Part2 : Answerable { public override int Year { get; set; } = 2022; diff --git a/Advent Of Code Library/2022/Day 06/Day06Part1.cs b/Advent Of Code Library/2022/Day 06/Day06Part1.cs index 37429a3..537b3e8 100644 --- a/Advent Of Code Library/2022/Day 06/Day06Part1.cs +++ b/Advent Of Code Library/2022/Day 06/Day06Part1.cs @@ -1,7 +1,5 @@ -namespace AdventOfCodeLibrary._2022 +namespace AdventOfCode.Solutions._2022 { - using AdventOfCodeLibrary.Shared; - public class Day06Part1 : Answerable { public override int Year { get; set; } = 2022; diff --git a/Advent Of Code Library/2022/Day 06/Day06Part2.cs b/Advent Of Code Library/2022/Day 06/Day06Part2.cs index 1fd3133..1f14dd3 100644 --- a/Advent Of Code Library/2022/Day 06/Day06Part2.cs +++ b/Advent Of Code Library/2022/Day 06/Day06Part2.cs @@ -1,7 +1,5 @@ -namespace AdventOfCodeLibrary._2022 +namespace AdventOfCode.Solutions._2022 { - using AdventOfCodeLibrary.Shared; - public class Day06Part2 : Answerable { public override int Year { get; set; } = 2022; diff --git a/Advent Of Code Library/2022/Day 07/Day07Part1.cs b/Advent Of Code Library/2022/Day 07/Day07Part1.cs index 10f419a..ea23350 100644 --- a/Advent Of Code Library/2022/Day 07/Day07Part1.cs +++ b/Advent Of Code Library/2022/Day 07/Day07Part1.cs @@ -1,8 +1,7 @@ -namespace AdventOfCodeLibrary._2022 -{ - using AdventOfCodeLibrary._2022.Day_07; - using AdventOfCodeLibrary.Shared; +using AdventOfCode.Solutions._2022.Day_07; +namespace AdventOfCode.Solutions._2022 +{ public class Day07Part1 : Answerable { public override int Year { get; set; } = 2022; diff --git a/Advent Of Code Library/2022/Day 07/Day07Part2.cs b/Advent Of Code Library/2022/Day 07/Day07Part2.cs index cc8ae1c..aa9bd72 100644 --- a/Advent Of Code Library/2022/Day 07/Day07Part2.cs +++ b/Advent Of Code Library/2022/Day 07/Day07Part2.cs @@ -1,8 +1,7 @@ -namespace AdventOfCodeLibrary._2022 -{ - using AdventOfCodeLibrary._2022.Day_07; - using AdventOfCodeLibrary.Shared; +using AdventOfCode.Solutions._2022.Day_07; +namespace AdventOfCode.Solutions._2022 +{ public class Day07Part2 : Answerable { public override int Year { get; set; } = 2022; diff --git a/Advent Of Code Library/2022/Day 07/DirectoryManager.cs b/Advent Of Code Library/2022/Day 07/DirectoryManager.cs index deefbfe..4c5f275 100644 --- a/Advent Of Code Library/2022/Day 07/DirectoryManager.cs +++ b/Advent Of Code Library/2022/Day 07/DirectoryManager.cs @@ -1,4 +1,4 @@ -namespace AdventOfCodeLibrary._2022.Day_07 +namespace AdventOfCode.Solutions._2022.Day_07 { public class Directory { diff --git a/Advent Of Code Library/2022/Day 08/Day08Part1.cs b/Advent Of Code Library/2022/Day 08/Day08Part1.cs index dd6aff3..d49dea4 100644 --- a/Advent Of Code Library/2022/Day 08/Day08Part1.cs +++ b/Advent Of Code Library/2022/Day 08/Day08Part1.cs @@ -1,7 +1,5 @@ -namespace AdventOfCodeLibrary._2022 +namespace AdventOfCode.Solutions._2022 { - using AdventOfCodeLibrary.Shared; - public class Day08Part1 : Answerable { public override int Year { get; set; } = 2022; diff --git a/Advent Of Code Library/2022/Day 08/Day08Part2.cs b/Advent Of Code Library/2022/Day 08/Day08Part2.cs index 8422271..bd27cd2 100644 --- a/Advent Of Code Library/2022/Day 08/Day08Part2.cs +++ b/Advent Of Code Library/2022/Day 08/Day08Part2.cs @@ -1,7 +1,5 @@ -namespace AdventOfCodeLibrary._2022 +namespace AdventOfCode.Solutions._2022 { - using AdventOfCodeLibrary.Shared; - public class Day08Part2 : Answerable { public override int Year { get; set; } = 2022; diff --git a/Advent Of Code Library/2022/Day 09/Day09Part1.cs b/Advent Of Code Library/2022/Day 09/Day09Part1.cs index 25c9465..9715a09 100644 --- a/Advent Of Code Library/2022/Day 09/Day09Part1.cs +++ b/Advent Of Code Library/2022/Day 09/Day09Part1.cs @@ -1,8 +1,7 @@ -namespace AdventOfCodeLibrary._2022 -{ - using AdventOfCodeLibrary._2022.Day_09; - using AdventOfCodeLibrary.Shared; +using AdventOfCode.Solutions._2022.Day_09; +namespace AdventOfCode.Solutions._2022 +{ public class Day09Part1 : Answerable { public override int Year { get; set; } = 2022; diff --git a/Advent Of Code Library/2022/Day 09/Day09Part2.cs b/Advent Of Code Library/2022/Day 09/Day09Part2.cs index d538483..a8fc400 100644 --- a/Advent Of Code Library/2022/Day 09/Day09Part2.cs +++ b/Advent Of Code Library/2022/Day 09/Day09Part2.cs @@ -1,8 +1,7 @@ -namespace AdventOfCodeLibrary._2022 -{ - using AdventOfCodeLibrary._2022.Day_09; - using AdventOfCodeLibrary.Shared; +using AdventOfCode.Solutions._2022.Day_09; +namespace AdventOfCode.Solutions._2022 +{ public class Day09Part2 : Answerable { public override int Year { get; set; } = 2022; diff --git a/Advent Of Code Library/2022/Day 09/RopeWalker.cs b/Advent Of Code Library/2022/Day 09/RopeWalker.cs index bbcc2a3..4bb91e9 100644 --- a/Advent Of Code Library/2022/Day 09/RopeWalker.cs +++ b/Advent Of Code Library/2022/Day 09/RopeWalker.cs @@ -1,4 +1,4 @@ -namespace AdventOfCodeLibrary._2022.Day_09 +namespace AdventOfCode.Solutions._2022.Day_09 { internal class VirtualPoint { diff --git a/Advent Of Code Library/2022/Day 10/Day10Part1.cs b/Advent Of Code Library/2022/Day 10/Day10Part1.cs index 4543ef0..3d0bacb 100644 --- a/Advent Of Code Library/2022/Day 10/Day10Part1.cs +++ b/Advent Of Code Library/2022/Day 10/Day10Part1.cs @@ -1,7 +1,5 @@ -namespace AdventOfCodeLibrary._2022 +namespace AdventOfCode.Solutions._2022 { - using AdventOfCodeLibrary.Shared; - public class Day10Part1 : Answerable { public override int Year { get; set; } = 2022; diff --git a/Advent Of Code Library/2022/Day 10/Day10Part2.cs b/Advent Of Code Library/2022/Day 10/Day10Part2.cs index 67b942d..06e4695 100644 --- a/Advent Of Code Library/2022/Day 10/Day10Part2.cs +++ b/Advent Of Code Library/2022/Day 10/Day10Part2.cs @@ -1,7 +1,5 @@ -namespace AdventOfCodeLibrary._2022 +namespace AdventOfCode.Solutions._2022 { - using AdventOfCodeLibrary.Shared; - public class Day10Part2 : Answerable { public override int Year { get; set; } = 2022; diff --git a/Advent Of Code Library/2022/Day 11/Day11Part1.cs b/Advent Of Code Library/2022/Day 11/Day11Part1.cs index 2c73e92..6aa41b0 100644 --- a/Advent Of Code Library/2022/Day 11/Day11Part1.cs +++ b/Advent Of Code Library/2022/Day 11/Day11Part1.cs @@ -1,8 +1,7 @@ -namespace AdventOfCodeLibrary._2022 -{ - using AdventOfCodeLibrary._2022.Day_11; - using AdventOfCodeLibrary.Shared; +using AdventOfCode.Solutions._2022.Day_11; +namespace AdventOfCode.Solutions._2022 +{ public class Day11Part1 : Answerable { public override int Year { get; set; } = 2022; diff --git a/Advent Of Code Library/2022/Day 11/Day11Part2.cs b/Advent Of Code Library/2022/Day 11/Day11Part2.cs index d573675..d94cc73 100644 --- a/Advent Of Code Library/2022/Day 11/Day11Part2.cs +++ b/Advent Of Code Library/2022/Day 11/Day11Part2.cs @@ -1,8 +1,7 @@ -namespace AdventOfCodeLibrary._2022 -{ - using AdventOfCodeLibrary._2022.Day_11; - using AdventOfCodeLibrary.Shared; +using AdventOfCode.Solutions._2022.Day_11; +namespace AdventOfCode.Solutions._2022 +{ public class Day11Part2 : Answerable { public override int Year { get; set; } = 2022; diff --git a/Advent Of Code Library/2022/Day 11/Monkey.cs b/Advent Of Code Library/2022/Day 11/Monkey.cs index 8da08e5..4d74ab3 100644 --- a/Advent Of Code Library/2022/Day 11/Monkey.cs +++ b/Advent Of Code Library/2022/Day 11/Monkey.cs @@ -1,4 +1,4 @@ -namespace AdventOfCodeLibrary._2022.Day_11 +namespace AdventOfCode.Solutions._2022.Day_11 { internal class Monkey { diff --git a/Advent Of Code Library/2022/Day 12/Day12Part1.cs b/Advent Of Code Library/2022/Day 12/Day12Part1.cs index af48497..8d7fb4b 100644 --- a/Advent Of Code Library/2022/Day 12/Day12Part1.cs +++ b/Advent Of Code Library/2022/Day 12/Day12Part1.cs @@ -1,7 +1,5 @@ -namespace AdventOfCodeLibrary._2022 +namespace AdventOfCode.Solutions._2022 { - using AdventOfCodeLibrary.Shared; - public class Day12Part1 : Answerable { public override int Year { get; set; } = 2022; diff --git a/Advent Of Code Library/2022/Day 12/Day12Part2.cs b/Advent Of Code Library/2022/Day 12/Day12Part2.cs index ed68cd9..e3538c8 100644 --- a/Advent Of Code Library/2022/Day 12/Day12Part2.cs +++ b/Advent Of Code Library/2022/Day 12/Day12Part2.cs @@ -1,7 +1,5 @@ -namespace AdventOfCodeLibrary._2022 +namespace AdventOfCode.Solutions._2022 { - using AdventOfCodeLibrary.Shared; - public class Day12Part2 : Answerable { public override int Year { get; set; } = 2022; diff --git a/Advent Of Code Library/2022/Day 12/Map.cs b/Advent Of Code Library/2022/Day 12/Map.cs index 5f2dfcc..52dae0f 100644 --- a/Advent Of Code Library/2022/Day 12/Map.cs +++ b/Advent Of Code Library/2022/Day 12/Map.cs @@ -1,4 +1,4 @@ -namespace AdventOfCodeLibrary._2022.Day_12 +namespace AdventOfCode.Solutions._2022.Day_12 { internal class Map { diff --git a/Advent Of Code Library/2023/Day 01/Day01Part1.cs b/Advent Of Code Library/2023/Day 01/Day01Part1.cs index 95c39e2..b41450a 100644 --- a/Advent Of Code Library/2023/Day 01/Day01Part1.cs +++ b/Advent Of Code Library/2023/Day 01/Day01Part1.cs @@ -1,9 +1,8 @@ -namespace AdventOfCodeLibrary._2023 -{ - using AdventOfCodeLibrary.Shared; - using System.Text.RegularExpressions; +using System.Text.RegularExpressions; - public class Day01Part1 : Answerable +namespace AdventOfCode.Solutions._2023 +{ +public class Day01Part1 : Answerable { public override int Year { get; set; } = 2023; public override int Day { get; set; } = 1; diff --git a/Advent Of Code Library/2023/Day 01/Day01Part2.cs b/Advent Of Code Library/2023/Day 01/Day01Part2.cs index 0026738..239cff7 100644 --- a/Advent Of Code Library/2023/Day 01/Day01Part2.cs +++ b/Advent Of Code Library/2023/Day 01/Day01Part2.cs @@ -1,8 +1,7 @@ -namespace AdventOfCodeLibrary._2023 -{ - using AdventOfCodeLibrary.Shared; - using System.Text.RegularExpressions; +using System.Text.RegularExpressions; +namespace AdventOfCode.Solutions._2023 +{ public class Day01Part2 : Answerable { public override int Year { get; set; } = 2023; diff --git a/Advent Of Code Library/2023/Day 02/Day02Part1.cs b/Advent Of Code Library/2023/Day 02/Day02Part1.cs index 4085fe5..1ac7f20 100644 --- a/Advent Of Code Library/2023/Day 02/Day02Part1.cs +++ b/Advent Of Code Library/2023/Day 02/Day02Part1.cs @@ -1,8 +1,7 @@ -namespace AdventOfCodeLibrary._2023 -{ - using AdventOfCodeLibrary.Shared; - using System.Text.RegularExpressions; +using System.Text.RegularExpressions; +namespace AdventOfCode.Solutions._2023 +{ public class Day02Part1 : Answerable { public override int Year { get; set; } = 2023; diff --git a/Advent Of Code Library/2023/Day 02/Day02Part2.cs b/Advent Of Code Library/2023/Day 02/Day02Part2.cs index 06d5b75..4262477 100644 --- a/Advent Of Code Library/2023/Day 02/Day02Part2.cs +++ b/Advent Of Code Library/2023/Day 02/Day02Part2.cs @@ -1,8 +1,7 @@ -namespace AdventOfCodeLibrary._2023 -{ - using AdventOfCodeLibrary.Shared; - using System.Text.RegularExpressions; +using System.Text.RegularExpressions; +namespace AdventOfCode.Solutions._2023 +{ public class Day02Part2 : Answerable { public override int Year { get; set; } = 2023; diff --git a/Advent Of Code Library/AdventOfCode.Solutions.csproj b/Advent Of Code Library/AdventOfCode.Solutions.csproj index 50322ae..b12121c 100644 --- a/Advent Of Code Library/AdventOfCode.Solutions.csproj +++ b/Advent Of Code Library/AdventOfCode.Solutions.csproj @@ -1,10 +1,14 @@ - + - net6.0 - AdventOfCodeLibrary + net8.0 + AdventOfCode.Solutions enable enable + + + + diff --git a/Advent Of Code Library/Usings.cs b/Advent Of Code Library/Usings.cs new file mode 100644 index 0000000..9b9d2ed --- /dev/null +++ b/Advent Of Code Library/Usings.cs @@ -0,0 +1 @@ +global using AdventOfCode.Core.Shared; \ No newline at end of file diff --git a/Advent Of Code.sln b/Advent Of Code.sln index 45c7b09..279fe15 100644 --- a/Advent Of Code.sln +++ b/Advent Of Code.sln @@ -5,7 +5,9 @@ VisualStudioVersion = 17.4.33103.184 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdventOfCode.Runner", "Advend Of Code Runner\AdventOfCode.Runner.csproj", "{6DCDC513-AF72-4029-932A-A0079BB5422B}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdventOfCode.Library", "Advent Of Code Library\AdventOfCode.Library.csproj", "{33CC3924-F18E-4B88-9989-A7A9077B9AC4}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdventOfCode.Solutions", "Advent Of Code Library\AdventOfCode.Solutions.csproj", "{33CC3924-F18E-4B88-9989-A7A9077B9AC4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdventOfCode.Core", "AdventOfCode.Code\AdventOfCode.Core.csproj", "{49EFF2F1-A5AD-448F-92EE-8CC95B2CECC2}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -21,6 +23,10 @@ Global {33CC3924-F18E-4B88-9989-A7A9077B9AC4}.Debug|Any CPU.Build.0 = Debug|Any CPU {33CC3924-F18E-4B88-9989-A7A9077B9AC4}.Release|Any CPU.ActiveCfg = Release|Any CPU {33CC3924-F18E-4B88-9989-A7A9077B9AC4}.Release|Any CPU.Build.0 = Release|Any CPU + {49EFF2F1-A5AD-448F-92EE-8CC95B2CECC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {49EFF2F1-A5AD-448F-92EE-8CC95B2CECC2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {49EFF2F1-A5AD-448F-92EE-8CC95B2CECC2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {49EFF2F1-A5AD-448F-92EE-8CC95B2CECC2}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/AdventOfCode.Code/AdventOfCode.Core.csproj b/AdventOfCode.Code/AdventOfCode.Core.csproj new file mode 100644 index 0000000..fa71b7a --- /dev/null +++ b/AdventOfCode.Code/AdventOfCode.Core.csproj @@ -0,0 +1,9 @@ + + + + net8.0 + enable + enable + + + diff --git a/AdventOfCode.Code/InputReader.cs b/AdventOfCode.Code/InputReader.cs new file mode 100644 index 0000000..cda462e --- /dev/null +++ b/AdventOfCode.Code/InputReader.cs @@ -0,0 +1,52 @@ +using System.Runtime.InteropServices.Marshalling; + +namespace AdventOfCode.Core +{ + public class InputReader + { + private readonly string InputFileTemplate = "../../../../Advent Of Code Library/{1}/Day {2:00}/day-{2:00}-input.txt"; + private int Day { get; set; } + private int Year { get; set; } + private string InputFilePath => string.Format(InputFileTemplate, Year, Day); + + public void SetInputByChallange() + { + SetInputByChallange(DateTime.Now.Day, DateTime.Now.Year); + } + + public void SetInputByChallange(int day) + { + SetInputByChallange(day, DateTime.Now.Year); + } + + public void SetInputByChallange(int day, int year) + { + Day = day; + Year = year; + } + + public async Task ReadAsString() => await File.ReadAllTextAsync(InputFilePath); + + public async IAsyncEnumerable ReadAsStringLine() + { + using StreamReader reader = new(InputFilePath); + while (!reader.EndOfStream) + { + yield return (await reader.ReadLineAsync()) ?? string.Empty; + } + } + + public async IAsyncEnumerable ReadAsStringLine(T emptyLineIndicator) + { + using StreamReader reader = new(InputFilePath); + while (!reader.EndOfStream) + { + string line = (await reader.ReadLineAsync()) ?? string.Empty; + if (string.IsNullOrWhiteSpace(line)) + yield return emptyLineIndicator; + else + yield return (T)Convert.ChangeType(line, typeof(T)); + } + } + } +} diff --git a/Advent Of Code Library/Shared/A-Star/AStarGrid.cs b/AdventOfCode.Code/Shared/A-Star/AStarGrid.cs similarity index 96% rename from Advent Of Code Library/Shared/A-Star/AStarGrid.cs rename to AdventOfCode.Code/Shared/A-Star/AStarGrid.cs index 830afa8..285766c 100644 --- a/Advent Of Code Library/Shared/A-Star/AStarGrid.cs +++ b/AdventOfCode.Code/Shared/A-Star/AStarGrid.cs @@ -1,4 +1,4 @@ -namespace AdventOfCodeLibrary.Shared.A_Star +namespace AdventOfCode.Core.Shared.A_Star { public class AStarGrid : Grid { diff --git a/Advent Of Code Library/Shared/A-Star/AStarNode.cs b/AdventOfCode.Code/Shared/A-Star/AStarNode.cs similarity index 95% rename from Advent Of Code Library/Shared/A-Star/AStarNode.cs rename to AdventOfCode.Code/Shared/A-Star/AStarNode.cs index fde509d..5cfb291 100644 --- a/Advent Of Code Library/Shared/A-Star/AStarNode.cs +++ b/AdventOfCode.Code/Shared/A-Star/AStarNode.cs @@ -1,4 +1,4 @@ -namespace AdventOfCodeLibrary.Shared.A_Star +namespace AdventOfCode.Core.Shared.A_Star { public class AStarNode : Node { diff --git a/Advent Of Code Library/Shared/Answerable.cs b/AdventOfCode.Code/Shared/Answerable.cs similarity index 71% rename from Advent Of Code Library/Shared/Answerable.cs rename to AdventOfCode.Code/Shared/Answerable.cs index 6702efd..543b08b 100644 --- a/Advent Of Code Library/Shared/Answerable.cs +++ b/AdventOfCode.Code/Shared/Answerable.cs @@ -1,6 +1,6 @@ using System.Text; -namespace AdventOfCodeLibrary.Shared +namespace AdventOfCode.Core.Shared { using System.Text.RegularExpressions; @@ -18,9 +18,9 @@ namespace AdventOfCodeLibrary.Shared public abstract string GetAnswer(byte[] data); - internal static string GetAsString(byte[] bytes) => Encoding.UTF8.GetString(bytes).ReplaceLineEndings(); + public static string GetAsString(byte[] bytes) => Encoding.UTF8.GetString(bytes).ReplaceLineEndings(); - internal static string[] GetAsStringArray(byte[] bytes) => GetAsString(bytes).Split(NewLine).ToArray(); + public static string[] GetAsStringArray(byte[] bytes) => GetAsString(bytes).Split(NewLine).ToArray(); private static string StripControlChars(string s) { diff --git a/Advent Of Code Library/Shared/AnswerableListBuilder.cs b/AdventOfCode.Code/Shared/AnswerableListBuilder.cs similarity index 95% rename from Advent Of Code Library/Shared/AnswerableListBuilder.cs rename to AdventOfCode.Code/Shared/AnswerableListBuilder.cs index 5ca0384..8d2709d 100644 --- a/Advent Of Code Library/Shared/AnswerableListBuilder.cs +++ b/AdventOfCode.Code/Shared/AnswerableListBuilder.cs @@ -1,6 +1,6 @@ using System.Reflection; -namespace AdventOfCodeLibrary.Shared +namespace AdventOfCode.Core.Shared { public class AnswerableListBuilder { diff --git a/Advent Of Code Library/Shared/Grid.cs b/AdventOfCode.Code/Shared/Grid.cs similarity index 96% rename from Advent Of Code Library/Shared/Grid.cs rename to AdventOfCode.Code/Shared/Grid.cs index 394507d..b34443c 100644 --- a/Advent Of Code Library/Shared/Grid.cs +++ b/AdventOfCode.Code/Shared/Grid.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace AdventOfCodeLibrary.Shared +namespace AdventOfCode.Core.Shared { public class Grid where T : Node { diff --git a/Advent Of Code Library/Shared/Node.cs b/AdventOfCode.Code/Shared/Node.cs similarity index 93% rename from Advent Of Code Library/Shared/Node.cs rename to AdventOfCode.Code/Shared/Node.cs index 7b13c7c..423a917 100644 --- a/Advent Of Code Library/Shared/Node.cs +++ b/AdventOfCode.Code/Shared/Node.cs @@ -1,4 +1,4 @@ -namespace AdventOfCodeLibrary.Shared +namespace AdventOfCode.Core.Shared { public class Node {