From 346aa4d049dd4b0aa776a94411bf3f5e41993d2c Mon Sep 17 00:00:00 2001 From: "Valeriano A.R" Date: Mon, 3 Dec 2018 14:16:15 +0100 Subject: [PATCH] Day01_Part2: Add failing tests. --- AdventOfCode2018.Tests/Day01_Tests.cs | 58 +++++++++++++++++++++++++++ AdventOfCode2018/Day01.cs | 35 +++++++++++++++- 2 files changed, 92 insertions(+), 1 deletion(-) diff --git a/AdventOfCode2018.Tests/Day01_Tests.cs b/AdventOfCode2018.Tests/Day01_Tests.cs index d5c7691..7990198 100644 --- a/AdventOfCode2018.Tests/Day01_Tests.cs +++ b/AdventOfCode2018.Tests/Day01_Tests.cs @@ -5,6 +5,8 @@ namespace AdventOfCode2018.Tests [TestClass()] public class Day01_Tests { + #region ResolveDay01 + [TestMethod()] public void ResolveDay01__Test1() { @@ -44,5 +46,61 @@ namespace AdventOfCode2018.Tests Assert.AreEqual("-6", result); } + + #endregion ResolveDay01 + + #region ResolveDay01_Part2 + + [TestMethod()] + public void ResolveDay01_Part2__Test1() + { + Day01 day01 = new Day01(); + + string result = day01.ResolveDay01_Part2(new string[] { "+1", "-2", "+3", "+1", }); + + Assert.AreEqual("2", result); + } + + [TestMethod()] + public void ResolveDay01_Part2__Test2() + { + Day01 day01 = new Day01(); + + string result = day01.ResolveDay01_Part2(new string[] { "+1", "-1", }); + + Assert.AreEqual("0", result); + } + + [TestMethod()] + public void ResolveDay01_Part2__Test3() + { + Day01 day01 = new Day01(); + + string result = day01.ResolveDay01_Part2(new string[] { "+3", "+3", "+4", "-2", "-4", }); + + Assert.AreEqual("10", result); + } + + [TestMethod()] + public void ResolveDay01_Part2__Test4() + { + Day01 day01 = new Day01(); + + string result = day01.ResolveDay01_Part2(new string[] { "-6", "+3", "+8", "+5", "-6", }); + + Assert.AreEqual("5", result); + } + + [TestMethod()] + public void ResolveDay01_Part2__Test5() + { + Day01 day01 = new Day01(); + + string result = day01.ResolveDay01_Part2(new string[] { "+7", "+7", "-2", "-7", "-4", }); + + Assert.AreEqual("14", result); + } + + #endregion ResolveDay01_Part2 } } \ No newline at end of file diff --git a/AdventOfCode2018/Day01.cs b/AdventOfCode2018/Day01.cs index 8172c3a..1474f6d 100644 --- a/AdventOfCode2018/Day01.cs +++ b/AdventOfCode2018/Day01.cs @@ -1,4 +1,6 @@ -namespace AdventOfCode2018 +using System; + +namespace AdventOfCode2018 { /* --- Day 1: Chronal Calibration --- @@ -29,6 +31,32 @@ -1, -2, -3 results in -6 Starting with a frequency of zero, what is the resulting frequency after all of the changes in frequency have been applied? + + --- Part Two --- + + You notice that the device repeats the same frequency change list over and over. To calibrate the device, you need to find the first frequency it reaches twice. + + For example, using the same list of changes above, the device would loop as follows: + + Current frequency 0, change of +1; resulting frequency 1. + Current frequency 1, change of -2; resulting frequency -1. + Current frequency -1, change of +3; resulting frequency 2. + Current frequency 2, change of +1; resulting frequency 3. + (At this point, the device continues from the start of the list.) + Current frequency 3, change of +1; resulting frequency 4. + Current frequency 4, change of -2; resulting frequency 2, which has already been seen. + + In this example, the first frequency reached twice is 2. Note that your device might need to repeat its list of frequency changes many times before a duplicate frequency is found, and that duplicates might be found while in the middle of processing the list. + + Here are other examples: + + +1, -1 first reaches 0 twice. + +3, +3, +4, -2, -4 first reaches 10 twice. + -6, +3, +8, +5, -6 first reaches 5 twice. + +7, +7, -2, -7, -4 first reaches 14 twice. + + What is the first frequency your device reaches twice? + */ public class Day01 @@ -54,5 +82,10 @@ return accumulator.ToString(); } + + public string ResolveDay01_Part2(string[] inputs) + { + throw new NotImplementedException(); + } } }