diff --git a/AdventOfCode/AdventOfCode.csproj b/AdventOfCode/AdventOfCode.csproj index e28e0ae..d323b8e 100644 --- a/AdventOfCode/AdventOfCode.csproj +++ b/AdventOfCode/AdventOfCode.csproj @@ -50,6 +50,8 @@ + + diff --git a/AdventOfCode/Problems/AOC2023/Day6/WaitForIt.cs b/AdventOfCode/Problems/AOC2023/Day6/WaitForIt.cs new file mode 100644 index 0000000..69a495f --- /dev/null +++ b/AdventOfCode/Problems/AOC2023/Day6/WaitForIt.cs @@ -0,0 +1,65 @@ +using AdventOfCode.Runner.Attributes; + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AdventOfCode.Problems.AOC2023.Day6; +[ProblemInfo(2023, 6, "Wait For It")] +internal class WaitForIt : Problem +{ + private int[] _times = []; + private int[] _distances = []; + private int _realTime; + private long _realDistance; + + public override void LoadInput() + { + var lines = ReadInputLines("input.txt"); + _times = lines[0].Split(':')[1] + .Split(' ') + .Where(e => e.Length > 0) + .Select(int.Parse) + .ToArray(); + + _distances = lines[1].Split(':')[1] + .Split(' ') + .Where(e => e.Length > 0) + .Select(int.Parse) + .ToArray(); + + _realTime = int.Parse(lines[0].Split(":")[1].Replace(" ", "")); + _realDistance = long.Parse(lines[1].Split(":")[1].Replace(" ", "")); + } + + public override void CalculatePart1() + { + var winList = new List(); + for (int i = 0; i < _times.Length; i++) + { + var time = _times[i]; + var distance = _distances[i]; + var minTime = (int)Math.Floor((float)distance / time); + var possibleHeldTimes = Enumerable.Range(minTime, time - minTime); + var races = possibleHeldTimes.Select(t => (time - t) * t); + winList.Add(races.Count(d => d > distance)); + } + Part1 = winList.Aggregate((a, b) => a * b); + } + + public override void CalculatePart2() + { + var minTime = (long)Math.Floor((float)_realDistance/ _realTime); + var maxTime = _realTime - minTime; + for (long i = minTime; i <= maxTime; i++) + { + var dist = (_realTime - i) * i; + if(dist > _realDistance) + Part2++; + } + } + +} diff --git a/AdventOfCode/Problems/AOC2023/Day6/input.txt b/AdventOfCode/Problems/AOC2023/Day6/input.txt new file mode 100644 index 0000000..bf135f6 --- /dev/null +++ b/AdventOfCode/Problems/AOC2023/Day6/input.txt @@ -0,0 +1,2 @@ +Time: 55 82 64 90 +Distance: 246 1441 1012 1111 \ No newline at end of file diff --git a/AdventOfCode/Problems/AOC2023/Day6/sample.txt b/AdventOfCode/Problems/AOC2023/Day6/sample.txt new file mode 100644 index 0000000..b39f49d --- /dev/null +++ b/AdventOfCode/Problems/AOC2023/Day6/sample.txt @@ -0,0 +1,2 @@ +Time: 7 15 30 +Distance: 9 40 200 \ No newline at end of file