public void Day09XmasDecoder_Part1_OK() { var numbers = DailyDataUtilities.ReadLongsFromFile("Day09Data.txt"); Assert.Equal(1000, numbers.Count); var sut = new XmasDecoder(numbers, 25); long actual = sut.FindFirstFail(); Assert.Equal(69316178, actual); }
public void Day10AdapterCheck_Part1_and_Part2_OK() { var adapters = DailyDataUtilities.ReadLongsFromFile("Day10Data.txt"); Assert.Equal(103, adapters.Count); adapters.Sort(); adapters.Insert(0, 0); adapters.Add(adapters[adapters.Count - 1] + 3); List <long> diffs = new List <long>(); for (int i = 0; i < adapters.Count - 1; i++) { diffs.Add(adapters[i + 1] - adapters[i]); } var ones = diffs.Where(d => d == 1).Count(); var threes = diffs.Where(d => d == 3).Count(); Assert.Equal(2343, ones * threes); Dictionary <long, long> combos = new Dictionary <long, long>(); // the first has to exist combos.Add(0, 1); for (int idx = 1; idx < adapters.Count; idx++) { combos.Add(adapters[idx], 0); if (combos.ContainsKey(adapters[idx] - 1)) { combos[adapters[idx]] += combos[adapters[idx] - 1]; } if (combos.ContainsKey(adapters[idx] - 2)) { combos[adapters[idx]] += combos[adapters[idx] - 2]; } if (combos.ContainsKey(adapters[idx] - 3)) { combos[adapters[idx]] += combos[adapters[idx] - 3]; } } Assert.Equal(31581162962944, combos[adapters.Max()]); }
public void Day10ReadData_OK() { var adapters = DailyDataUtilities.ReadLongsFromFile("Day10Data.txt"); Assert.Equal(103, adapters.Count); }
public void Day09ReadDataFileAsLongs_OK() { var numbers = DailyDataUtilities.ReadLongsFromFile("Day09Data.txt"); Assert.Equal(1000, numbers.Count); }