using System; using static System.Console; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.RegularExpressions; using Xunit; namespace AdventOfCode { public class Day09 { static bool Valid(List ints, int preambleSize, int target) { for (int i = target - preambleSize; i < target - 1; i++) { for (int j = i + 1; j < target; j++) { if (i == j) { continue; } if (ints[i] + ints[j] == ints[target]) { return true; } } } return false; } static long FindInvalid(List ints, int preambleSize) { for (int target = preambleSize; target < ints.Count(); target++) { if (!Valid(ints, preambleSize, target)) { return ints[target]; } } throw new Exception("didn't find an invalid int"); } static long Part1() { string[] input = File.ReadAllLines(Util.RootDir + "day09.txt"); List ints = input.ToList().Select(long.Parse).ToList(); return FindInvalid(ints, 25); } static int Part2() { return -1; } [Fact] public static void Test() { string[] example = @"35 20 15 25 47 40 62 55 65 95 102 117 150 182 127 219 299 277 309 576".Split('\n'); List ints = example.ToList().Select(long.Parse).ToList(); Assert.Equal(127, FindInvalid(ints, 5)); Assert.Equal(50047984, Part1()); Assert.Equal(-1, Part2()); } } }