diff options
-rw-r--r-- | .drone.yml | 9 | ||||
-rw-r--r-- | aoc2019.sln | 16 | ||||
-rw-r--r-- | aoc2019.test/Tests.cs | 56 | ||||
-rw-r--r-- | aoc2019.test/aoc2019.test.csproj | 20 | ||||
-rw-r--r-- | aoc2019/Day.cs (renamed from Day.cs) | 4 | ||||
-rw-r--r-- | aoc2019/Day01.cs (renamed from Day01.cs) | 6 | ||||
-rw-r--r-- | aoc2019/Day02.cs (renamed from Day02.cs) | 6 | ||||
-rw-r--r-- | aoc2019/Day03.cs (renamed from Day03.cs) | 6 | ||||
-rw-r--r-- | aoc2019/Day04.cs (renamed from Day04.cs) | 6 | ||||
-rw-r--r-- | aoc2019/Day05.cs (renamed from Day05.cs) | 6 | ||||
-rw-r--r-- | aoc2019/Day06.cs (renamed from Day06.cs) | 6 | ||||
-rw-r--r-- | aoc2019/Day07.cs (renamed from Day07.cs) | 6 | ||||
-rw-r--r-- | aoc2019/Day08.cs (renamed from Day08.cs) | 6 | ||||
-rw-r--r-- | aoc2019/Day09.cs (renamed from Day09.cs) | 6 | ||||
-rw-r--r-- | aoc2019/Day10.cs (renamed from Day10.cs) | 6 | ||||
-rw-r--r-- | aoc2019/Day11.cs (renamed from Day11.cs) | 6 | ||||
-rw-r--r-- | aoc2019/Day12.cs (renamed from Day12.cs) | 6 | ||||
-rw-r--r-- | aoc2019/Day13.cs (renamed from Day13.cs) | 6 | ||||
-rw-r--r-- | aoc2019/Day14.cs (renamed from Day14.cs) | 6 | ||||
-rw-r--r-- | aoc2019/Day15.cs (renamed from Day15.cs) | 6 | ||||
-rw-r--r-- | aoc2019/Day16.cs (renamed from Day16.cs) | 6 | ||||
-rw-r--r-- | aoc2019/Day17.cs (renamed from Day17.cs) | 6 | ||||
-rw-r--r-- | aoc2019/Program.cs (renamed from Program.cs) | 62 | ||||
-rw-r--r-- | aoc2019/README.md (renamed from README.md) | 0 | ||||
-rw-r--r-- | aoc2019/aoc2019.csproj (renamed from aoc2019.csproj) | 28 | ||||
-rw-r--r-- | aoc2019/input/day01.in (renamed from input/day01.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day02.in (renamed from input/day02.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day03.in (renamed from input/day03.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day04.in (renamed from input/day04.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day05.in (renamed from input/day05.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day06.in (renamed from input/day06.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day07.in (renamed from input/day07.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day08.in (renamed from input/day08.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day09.in (renamed from input/day09.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day10.in (renamed from input/day10.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day11.in (renamed from input/day11.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day12.in (renamed from input/day12.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day13.in (renamed from input/day13.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day14.in (renamed from input/day14.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day15.in (renamed from input/day15.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day16.in (renamed from input/day16.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day17.in (renamed from input/day17.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day18.in (renamed from input/day18.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day19.in (renamed from input/day19.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day20.in (renamed from input/day20.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day21.in (renamed from input/day21.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day22.in (renamed from input/day22.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day23.in (renamed from input/day23.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day24.in (renamed from input/day24.in) | 0 | ||||
-rw-r--r-- | aoc2019/input/day25.in (renamed from input/day25.in) | 0 | ||||
-rw-r--r-- | aoc2019/lib/Extensions.cs (renamed from lib/Extensions.cs) | 0 | ||||
-rw-r--r-- | aoc2019/lib/IntCodeVM.cs (renamed from lib/IntCodeVM.cs) | 0 |
52 files changed, 190 insertions, 107 deletions
diff --git a/.drone.yml b/.drone.yml index 42c62bb..09bd08f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -3,7 +3,8 @@ kind: pipeline name: run steps: - - name: run - image: mcr.microsoft.com/dotnet/sdk:latest - commands: - - dotnet run + - name: run + image: mcr.microsoft.com/dotnet/sdk:latest + commands: + - dotnet test + - dotnet run --project aoc2019/aoc2019.csproj diff --git a/aoc2019.sln b/aoc2019.sln index fe311d7..29afd37 100644 --- a/aoc2019.sln +++ b/aoc2019.sln @@ -3,7 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 VisualStudioVersion = 16.0.29519.181 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "aoc2019", "aoc2019.csproj", "{0F1DADD9-2DC3-4035-BE2A-1CC9BBB623A9}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "aoc2019", "aoc2019\aoc2019.csproj", "{D99F8F27-0CF3-4220-95F5-B8F92D02F17D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "aoc2019.test", "aoc2019.test\aoc2019.test.csproj", "{D168189E-28FC-440F-B64C-02C6D9FBBEE0}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -11,10 +13,14 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {0F1DADD9-2DC3-4035-BE2A-1CC9BBB623A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0F1DADD9-2DC3-4035-BE2A-1CC9BBB623A9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0F1DADD9-2DC3-4035-BE2A-1CC9BBB623A9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0F1DADD9-2DC3-4035-BE2A-1CC9BBB623A9}.Release|Any CPU.Build.0 = Release|Any CPU + {D99F8F27-0CF3-4220-95F5-B8F92D02F17D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D99F8F27-0CF3-4220-95F5-B8F92D02F17D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D99F8F27-0CF3-4220-95F5-B8F92D02F17D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D99F8F27-0CF3-4220-95F5-B8F92D02F17D}.Release|Any CPU.Build.0 = Release|Any CPU + {D168189E-28FC-440F-B64C-02C6D9FBBEE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D168189E-28FC-440F-B64C-02C6D9FBBEE0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D168189E-28FC-440F-B64C-02C6D9FBBEE0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D168189E-28FC-440F-B64C-02C6D9FBBEE0}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/aoc2019.test/Tests.cs b/aoc2019.test/Tests.cs new file mode 100644 index 0000000..48706a8 --- /dev/null +++ b/aoc2019.test/Tests.cs @@ -0,0 +1,56 @@ +using System; +using System.Diagnostics; +using aoc2019; +using aoc2019.lib; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace aoc2019.test +{ + [TestClass] + public class Tests + { + [DataTestMethod] + [DataRow(typeof(Day01), "3394106", "5088280")] + [DataRow(typeof(Day02), "3085697", "9425")] + [DataRow(typeof(Day03), "1195", "91518")] + [DataRow(typeof(Day04), "1079", "699")] + [DataRow(typeof(Day05), "7692125", "14340395")] + [DataRow(typeof(Day06), "145250", "274")] + [DataRow(typeof(Day07), "19650", "35961106")] + [DataRow(typeof(Day08), "2413", "xxx xx xxx xxxx xxx \r\nx x x x x x x x x \r\nxxx x x x x xxx \r\nx x x xxx x x x \r\nx x x x x x x x \r\nxxx xx x xxxx xxx ")] + [DataRow(typeof(Day09), "3409270027", "82760")] + [DataRow(typeof(Day10), "260", "608")] + [DataRow(typeof(Day11), "2054", " # # ### #### #### ## ## # # ### \r\n # # # # # # # # # # # # # \r\n ## # # # ### # # # #### ### \r\n # # ### # # #### # # # # # \r\n # # # # # # # # # # # # # # \r\n # # # # #### #### # # ## # # ### ")] + [DataRow(typeof(Day12), "10635", "583523031727256")] + [DataRow(typeof(Day13), "361", "after 7133 moves, the score is: 17590")] + [DataRow(typeof(Day14), "397771", "3126714")] + [DataRow(typeof(Day15), "280", "400")] + [DataRow(typeof(Day16), "90744714", "82994322")] + [DataRow(typeof(Day17), "2804", "")] + public void TestAllDays(Type dayType, string part1, string part2) + { + // create day instance + var s = Stopwatch.StartNew(); + var day = (Day) Activator.CreateInstance(dayType); + s.Stop(); + Assert.IsNotNull(day, "failed to create day object"); + Console.WriteLine($"{s.ScaleMilliseconds()}ms elapsed in constructor"); + + // part 1 + s.Reset(); + s.Start(); + var part1Actual = day.Part1(); + s.Stop(); + Console.WriteLine($"{s.ScaleMilliseconds()}ms elapsed in part1"); + Assert.AreEqual(part1, part1Actual, $"Incorrect answer for Day {day.DayNumber} Part1"); + + // part 2 + s.Reset(); + s.Start(); + var part2Actual = day.Part2(); + s.Stop(); + Console.WriteLine($"{s.ScaleMilliseconds()}ms elapsed in part2"); + Assert.AreEqual(part2, part2Actual, $"Incorrect answer for Day {day.DayNumber} Part2"); + } + } +} diff --git a/aoc2019.test/aoc2019.test.csproj b/aoc2019.test/aoc2019.test.csproj new file mode 100644 index 0000000..f3b9de8 --- /dev/null +++ b/aoc2019.test/aoc2019.test.csproj @@ -0,0 +1,20 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>net5.0</TargetFramework> + + <IsPackable>false</IsPackable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1" /> + <PackageReference Include="MSTest.TestAdapter" Version="2.1.1" /> + <PackageReference Include="MSTest.TestFramework" Version="2.1.1" /> + <PackageReference Include="coverlet.collector" Version="1.3.0" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\aoc2019\aoc2019.csproj" /> + </ItemGroup> + +</Project> diff --git a/Day.cs b/aoc2019/Day.cs index eb3ef49..e1bdb25 100644 --- a/Day.cs +++ b/aoc2019/Day.cs @@ -43,7 +43,7 @@ namespace aoc2019 Console.WriteLine(); } - protected abstract string Part1(); - protected abstract string Part2(); + public abstract string Part1(); + public abstract string Part2(); } } \ No newline at end of file diff --git a/Day01.cs b/aoc2019/Day01.cs index d991917..6ebdce5 100644 --- a/Day01.cs +++ b/aoc2019/Day01.cs @@ -3,7 +3,7 @@ using System.Linq; namespace aoc2019 { - internal sealed class Day01 : Day + public sealed class Day01 : Day { private readonly IEnumerable<int> masses; @@ -30,12 +30,12 @@ namespace aoc2019 return total; } - protected override string Part1() + public override string Part1() { return $"{masses.Sum(FuelCost)}"; } - protected override string Part2() + public override string Part2() { return $"{masses.Sum(FullCost)}"; } diff --git a/Day02.cs b/aoc2019/Day02.cs index 3a79970..ce99a0a 100644 --- a/Day02.cs +++ b/aoc2019/Day02.cs @@ -3,7 +3,7 @@ using System.Linq; namespace aoc2019 { - internal sealed class Day02 : Day + public sealed class Day02 : Day { private readonly IEnumerable<int> input; @@ -28,12 +28,12 @@ namespace aoc2019 return v[0]; } - protected override string Part1() + public override string Part1() { return $"{RunIntCode(12, 2)}"; } - protected override string Part2() + public override string Part2() { for (var i = 0; i < 100; i++) for (var j = 0; j < 100; j++) diff --git a/Day03.cs b/aoc2019/Day03.cs index e339c27..bf32fb3 100644 --- a/Day03.cs +++ b/aoc2019/Day03.cs @@ -4,7 +4,7 @@ using System.Linq; namespace aoc2019 { - internal sealed class Day03 : Day + public sealed class Day03 : Day { private readonly IEnumerable<(int, int)> intersections; private readonly List<Dictionary<(int, int), int>> wires; @@ -15,12 +15,12 @@ namespace aoc2019 intersections = wires[0].Keys.Intersect(wires[1].Keys); } - protected override string Part1() + public override string Part1() { return $"{intersections.Min(x => Math.Abs(x.Item1) + Math.Abs(x.Item2))}"; } - protected override string Part2() + public override string Part2() { // add 2 to count (0, 0) on both lines return $"{intersections.Min(x => wires[0][x] + wires[1][x]) + 2}"; diff --git a/Day04.cs b/aoc2019/Day04.cs index f4ddcf9..808eb64 100644 --- a/Day04.cs +++ b/aoc2019/Day04.cs @@ -2,7 +2,7 @@ namespace aoc2019 { - internal sealed class Day04 : Day + public sealed class Day04 : Day { private readonly int end; @@ -36,12 +36,12 @@ namespace aoc2019 return IsValid(i) && s.Select(c => s.Count(j => j == c)).Any(c => c == 2); } - protected override string Part1() + public override string Part1() { return $"{Enumerable.Range(start, end).Count(IsValid)}"; } - protected override string Part2() + public override string Part2() { return $"{Enumerable.Range(start, end).Count(HasOnePair)}"; } diff --git a/Day05.cs b/aoc2019/Day05.cs index 763d0f8..2020627 100644 --- a/Day05.cs +++ b/aoc2019/Day05.cs @@ -3,7 +3,7 @@ using System.Linq; namespace aoc2019 { - internal sealed class Day05 : Day + public sealed class Day05 : Day { private readonly IEnumerable<int> tape; @@ -63,13 +63,13 @@ namespace aoc2019 } } - protected override string Part1() + public override string Part1() { RunIntCode(tape.ToList(), 1); return $"{output}"; } - protected override string Part2() + public override string Part2() { RunIntCode(tape.ToList(), 5); return $"{output}"; diff --git a/Day06.cs b/aoc2019/Day06.cs index 7ef3d0a..ede02da 100644 --- a/Day06.cs +++ b/aoc2019/Day06.cs @@ -3,7 +3,7 @@ using System.Linq; namespace aoc2019 { - internal sealed class Day06 : Day + public sealed class Day06 : Day { private readonly Dictionary<string, string> input; @@ -21,12 +21,12 @@ namespace aoc2019 return res; } - protected override string Part1() + public override string Part1() { return $"{input.Keys.Sum(o => GetParents(o).Count - 1)}"; } - protected override string Part2() + public override string Part2() { var you = GetParents("YOU"); var san = GetParents("SAN"); diff --git a/Day07.cs b/aoc2019/Day07.cs index f26b8a6..10684b9 100644 --- a/Day07.cs +++ b/aoc2019/Day07.cs @@ -4,7 +4,7 @@ using aoc2019.lib; namespace aoc2019 { - internal sealed class Day07 : Day + public sealed class Day07 : Day { private readonly IntCodeVM[] Amplifiers = new IntCodeVM[5]; @@ -13,7 +13,7 @@ namespace aoc2019 for (var i = 0; i < 5; i++) Amplifiers[i] = new IntCodeVM(Input.First()); } - protected override string Part1() + public override string Part1() { long i, largest = 0; @@ -34,7 +34,7 @@ namespace aoc2019 return $"{largest}"; } - protected override string Part2() + public override string Part2() { long i, largest = 0; diff --git a/Day08.cs b/aoc2019/Day08.cs index 94cd461..ea8f587 100644 --- a/Day08.cs +++ b/aoc2019/Day08.cs @@ -5,7 +5,7 @@ using aoc2019.lib; namespace aoc2019 { - internal sealed class Day08 : Day + public sealed class Day08 : Day { private readonly List<List<char>> photo; @@ -14,13 +14,13 @@ namespace aoc2019 photo = Input.First().Chunk(25 * 6).Select(s => s.ToList()).ToList(); } - protected override string Part1() + public override string Part1() { var l = photo.OrderBy(layer => layer.Count(pixel => pixel == '0')).First(); return $"{l.Count(p => p == '1') * l.Count(p => p == '2')}"; } - protected override string Part2() + public override string Part2() { return Enumerable.Range(0, 25 * 6) .Select(p => Enumerable.Range(0, photo.Count) diff --git a/Day09.cs b/aoc2019/Day09.cs index 0f45dfd..d5edd0a 100644 --- a/Day09.cs +++ b/aoc2019/Day09.cs @@ -3,7 +3,7 @@ using aoc2019.lib; namespace aoc2019 { - internal sealed class Day09 : Day + public sealed class Day09 : Day { private readonly IntCodeVM vm; @@ -12,14 +12,14 @@ namespace aoc2019 vm = new IntCodeVM(Input.First()); } - protected override string Part1() + public override string Part1() { vm.Reset(); vm.Run(1); return $"{vm.output.ToDelimitedString(",")}"; } - protected override string Part2() + public override string Part2() { vm.Reset(); vm.Run(2); diff --git a/Day10.cs b/aoc2019/Day10.cs index 376e427..6151e54 100644 --- a/Day10.cs +++ b/aoc2019/Day10.cs @@ -5,7 +5,7 @@ using aoc2019.lib; namespace aoc2019 { - internal sealed class Day10 : Day + public sealed class Day10 : Day { private readonly HashSet<(int x, int y)> asteroids; private (int x, int y) best = (x: -1, y: -1); @@ -21,7 +21,7 @@ namespace aoc2019 .ToHashSet(); } - protected override string Part1() + public override string Part1() { foreach (var asteroid in asteroids) { @@ -41,7 +41,7 @@ namespace aoc2019 return $"{bestCanSee}"; } - protected override string Part2() + public override string Part2() { static IEnumerable<(int x, int y, double angle, double dist)> GetValue( Queue<(int x, int y, double angle, double dist)> q) diff --git a/Day11.cs b/aoc2019/Day11.cs index e45f6ce..bce7cce 100644 --- a/Day11.cs +++ b/aoc2019/Day11.cs @@ -5,7 +5,7 @@ using aoc2019.lib; namespace aoc2019 { - internal sealed class Day11 : Day + public sealed class Day11 : Day { private readonly IntCodeVM vm; private Direction heading; @@ -78,12 +78,12 @@ namespace aoc2019 return map; } - protected override string Part1() + public override string Part1() { return $"{PaintShip(0).Count}"; } - protected override string Part2() + public override string Part2() { var map = PaintShip(1); var minX = (int) map.Keys.Select(x => x.x).Min(); diff --git a/Day12.cs b/aoc2019/Day12.cs index 312c705..04e215e 100644 --- a/Day12.cs +++ b/aoc2019/Day12.cs @@ -4,7 +4,7 @@ using System.Linq; namespace aoc2019 { - internal sealed class Day12 : Day + public sealed class Day12 : Day { private readonly List<Position> moons; private int step; @@ -48,7 +48,7 @@ namespace aoc2019 step++; } - protected override string Part1() + public override string Part1() { while (step < 1000) Step(); @@ -56,7 +56,7 @@ namespace aoc2019 return $"{moons.Sum(p => p.TotalEnergy)}"; } - protected override string Part2() + public override string Part2() { int cycleX = 0, cycleY = 0, cycleZ = 0; diff --git a/Day13.cs b/aoc2019/Day13.cs index 4dff712..4d919e7 100644 --- a/Day13.cs +++ b/aoc2019/Day13.cs @@ -5,7 +5,7 @@ using aoc2019.lib; namespace aoc2019 { - internal sealed class Day13 : Day + public sealed class Day13 : Day { private readonly Dictionary<(int x, int y), int> board; @@ -52,14 +52,14 @@ namespace aoc2019 } } - protected override string Part1() + public override string Part1() { vm.Reset(); vm.Run(); return $"{vm.output.Where((v, i) => (i + 1) % 3 == 0 && v == 2).Count()}"; } - protected override string Part2() + public override string Part2() { vm.Reset(); vm.memory[0] = 2; diff --git a/Day14.cs b/aoc2019/Day14.cs index a73a858..af7af42 100644 --- a/Day14.cs +++ b/aoc2019/Day14.cs @@ -4,7 +4,7 @@ using System.Linq; namespace aoc2019 { - internal sealed class Day14 : Day + public sealed class Day14 : Day { private readonly Dictionary<string, Reaction> reactions; @@ -48,14 +48,14 @@ namespace aoc2019 return true; } - protected override string Part1() + public override string Part1() { available = new Dictionary<string, long> {{"ORE", long.MaxValue}}; Consume("FUEL", 1); return $"{long.MaxValue - available["ORE"]}"; } - protected override string Part2() + public override string Part2() { const long capacity = 1_000_000_000_000; available = new Dictionary<string, long> {{"ORE", capacity}}; diff --git a/Day15.cs b/aoc2019/Day15.cs index 0b2ca88..59d720c 100644 --- a/Day15.cs +++ b/aoc2019/Day15.cs @@ -5,7 +5,7 @@ using aoc2019.lib; namespace aoc2019 { - internal sealed class Day15 : Day + public sealed class Day15 : Day { private readonly bool verbose = false; private readonly IntCodeVM vm; @@ -15,7 +15,7 @@ namespace aoc2019 vm = new IntCodeVM(Input.First()); } - protected override string Part1() + public override string Part1() { vm.Reset(); var currentLocation = new Location(0, 0); @@ -109,7 +109,7 @@ namespace aoc2019 return ""; } - protected override string Part2() + public override string Part2() { var changed = true; while (changed) diff --git a/Day16.cs b/aoc2019/Day16.cs index e2958bd..310363a 100644 --- a/Day16.cs +++ b/aoc2019/Day16.cs @@ -5,7 +5,7 @@ using aoc2019.lib; namespace aoc2019 { - internal sealed class Day16 : Day + public sealed class Day16 : Day { private static readonly int[] BasePattern = {0, 1, 0, -1}; private readonly int[] initialList; @@ -15,7 +15,7 @@ namespace aoc2019 initialList = Input.First().Select(c => int.Parse($"{c}")).ToArray(); } - protected override string Part1() + public override string Part1() { const int phaseCount = 100; var signal0 = initialList.ToArray(); @@ -29,7 +29,7 @@ namespace aoc2019 .ToArray()); } - protected override string Part2() + public override string Part2() { const int phaseCount = 100; var messageOffset = initialList.Take(7).Aggregate((n, i) => n * 10 + i); diff --git a/Day17.cs b/aoc2019/Day17.cs index 2438ee9..557881e 100644 --- a/Day17.cs +++ b/aoc2019/Day17.cs @@ -5,7 +5,7 @@ using aoc2019.lib; namespace aoc2019 { - internal sealed class Day17 : Day + public sealed class Day17 : Day { private const bool Verbose = false; @@ -16,7 +16,7 @@ namespace aoc2019 vm = new IntCodeVM(Input.First()); } - protected override string Part1() + public override string Part1() { vm.Reset(); vm.Run(); @@ -39,7 +39,7 @@ namespace aoc2019 return $"{sum}"; } - protected override string Part2() + public override string Part2() { //vm.Reset(); //vm.memory[0] = 2; diff --git a/Program.cs b/aoc2019/Program.cs index 4338952..c523439 100644 --- a/Program.cs +++ b/aoc2019/Program.cs @@ -1,32 +1,32 @@ -using System; -using System.Linq; -using System.Reflection; - -namespace aoc2019 -{ - internal static class Program - { - private static void Main(string[] args) - { - var days = - Assembly.GetExecutingAssembly().GetTypes() - .Where(t => t.BaseType == typeof(Day)) - .Select(t => (Day) Activator.CreateInstance(t)) - .OrderBy(d => d.DayNumber); - - if (args.Length == 1 && int.TryParse(args[0], out var dayNum)) - { - var day = days.FirstOrDefault(d => d.DayNumber == dayNum); - - if (day != null) - day.AllParts(); - else - Console.WriteLine($"{dayNum} invalid or not yet implemented"); - } - else - { - foreach (var d in days) d.AllParts(); - } - } - } +using System; +using System.Linq; +using System.Reflection; + +namespace aoc2019 +{ + internal static class Program + { + private static void Main(string[] args) + { + var days = + Assembly.GetExecutingAssembly().GetTypes() + .Where(t => t.BaseType == typeof(Day)) + .Select(t => (Day) Activator.CreateInstance(t)) + .OrderBy(d => d.DayNumber); + + if (args.Length == 1 && int.TryParse(args[0], out var dayNum)) + { + var day = days.FirstOrDefault(d => d.DayNumber == dayNum); + + if (day != null) + day.AllParts(); + else + Console.WriteLine($"{dayNum} invalid or not yet implemented"); + } + else + { + foreach (var d in days) d.AllParts(); + } + } + } } \ No newline at end of file diff --git a/README.md b/aoc2019/README.md index 0e6fdc8..0e6fdc8 100644 --- a/README.md +++ b/aoc2019/README.md diff --git a/aoc2019.csproj b/aoc2019/aoc2019.csproj index eaa667f..494194f 100644 --- a/aoc2019.csproj +++ b/aoc2019/aoc2019.csproj @@ -1,14 +1,14 @@ -<Project Sdk="Microsoft.NET.Sdk"> - - <PropertyGroup> - <OutputType>Exe</OutputType> - <TargetFramework>net5.0</TargetFramework> - </PropertyGroup> - - <ItemGroup> - <None Update="input\day*.in"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </None> - </ItemGroup> - -</Project> +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>net5.0</TargetFramework> + </PropertyGroup> + + <ItemGroup> + <None Update="input\day*.in"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + </ItemGroup> + +</Project> diff --git a/input/day01.in b/aoc2019/input/day01.in index fb4481d..fb4481d 100644 --- a/input/day01.in +++ b/aoc2019/input/day01.in diff --git a/input/day02.in b/aoc2019/input/day02.in index c3ac93e..c3ac93e 100644 --- a/input/day02.in +++ b/aoc2019/input/day02.in diff --git a/input/day03.in b/aoc2019/input/day03.in index d8a6b32..d8a6b32 100644 --- a/input/day03.in +++ b/aoc2019/input/day03.in diff --git a/input/day04.in b/aoc2019/input/day04.in index 6190bcb..6190bcb 100644 --- a/input/day04.in +++ b/aoc2019/input/day04.in diff --git a/input/day05.in b/aoc2019/input/day05.in index 4d8fafe..4d8fafe 100644 --- a/input/day05.in +++ b/aoc2019/input/day05.in diff --git a/input/day06.in b/aoc2019/input/day06.in index 2868a3f..2868a3f 100644 --- a/input/day06.in +++ b/aoc2019/input/day06.in diff --git a/input/day07.in b/aoc2019/input/day07.in index 0128ef0..0128ef0 100644 --- a/input/day07.in +++ b/aoc2019/input/day07.in diff --git a/input/day08.in b/aoc2019/input/day08.in index 9100e5b..9100e5b 100644 --- a/input/day08.in +++ b/aoc2019/input/day08.in diff --git a/input/day09.in b/aoc2019/input/day09.in index 0e05ddc..0e05ddc 100644 --- a/input/day09.in +++ b/aoc2019/input/day09.in diff --git a/input/day10.in b/aoc2019/input/day10.in index bf4ecf6..bf4ecf6 100644 --- a/input/day10.in +++ b/aoc2019/input/day10.in diff --git a/input/day11.in b/aoc2019/input/day11.in index 693f432..693f432 100644 --- a/input/day11.in +++ b/aoc2019/input/day11.in diff --git a/input/day12.in b/aoc2019/input/day12.in index 071ed71..071ed71 100644 --- a/input/day12.in +++ b/aoc2019/input/day12.in diff --git a/input/day13.in b/aoc2019/input/day13.in index bb41b45..bb41b45 100644 --- a/input/day13.in +++ b/aoc2019/input/day13.in diff --git a/input/day14.in b/aoc2019/input/day14.in index 438d38f..438d38f 100644 --- a/input/day14.in +++ b/aoc2019/input/day14.in diff --git a/input/day15.in b/aoc2019/input/day15.in index 79901fe..79901fe 100644 --- a/input/day15.in +++ b/aoc2019/input/day15.in diff --git a/input/day16.in b/aoc2019/input/day16.in index b8d468b..b8d468b 100644 --- a/input/day16.in +++ b/aoc2019/input/day16.in diff --git a/input/day17.in b/aoc2019/input/day17.in index 9b6105d..9b6105d 100644 --- a/input/day17.in +++ b/aoc2019/input/day17.in diff --git a/input/day18.in b/aoc2019/input/day18.in index fe32fb3..fe32fb3 100644 --- a/input/day18.in +++ b/aoc2019/input/day18.in diff --git a/input/day19.in b/aoc2019/input/day19.in index 1d8e0c8..1d8e0c8 100644 --- a/input/day19.in +++ b/aoc2019/input/day19.in diff --git a/input/day20.in b/aoc2019/input/day20.in index 0047b8a..0047b8a 100644 --- a/input/day20.in +++ b/aoc2019/input/day20.in diff --git a/input/day21.in b/aoc2019/input/day21.in index 48e194e..48e194e 100644 --- a/input/day21.in +++ b/aoc2019/input/day21.in diff --git a/input/day22.in b/aoc2019/input/day22.in index f7a54bc..f7a54bc 100644 --- a/input/day22.in +++ b/aoc2019/input/day22.in diff --git a/input/day23.in b/aoc2019/input/day23.in index 67fd867..67fd867 100644 --- a/input/day23.in +++ b/aoc2019/input/day23.in diff --git a/input/day24.in b/aoc2019/input/day24.in index 5126c4f..5126c4f 100644 --- a/input/day24.in +++ b/aoc2019/input/day24.in diff --git a/input/day25.in b/aoc2019/input/day25.in index b060a82..b060a82 100644 --- a/input/day25.in +++ b/aoc2019/input/day25.in diff --git a/lib/Extensions.cs b/aoc2019/lib/Extensions.cs index eb8c3cb..eb8c3cb 100644 --- a/lib/Extensions.cs +++ b/aoc2019/lib/Extensions.cs diff --git a/lib/IntCodeVM.cs b/aoc2019/lib/IntCodeVM.cs index 2190579..2190579 100644 --- a/lib/IntCodeVM.cs +++ b/aoc2019/lib/IntCodeVM.cs |