/// <summary> /// ChristmasCracker.Cmd entry point /// </summary> /// <param name="args">Command line arguments (not used)</param> static void Main(string[] args) { var filePath = "./input"; var reader = new FileReader(); var inputStrings = reader.ReadFileByLines(filePath); if (inputStrings.Where(input => long.TryParse(input, out var _) == false).Any()) { throw new FormatException("Input file must be only integers"); } var inputs = inputStrings.Select(input => long.Parse(input)); var preambleLength = 25; var cracker = new Cracker(); var results = cracker.FindUnsummableNumbers(preambleLength, 2, inputs); var unSummableNumber = results.First(); Console.WriteLine(unSummableNumber); var attackResults = cracker.AttackUnsummableNumber(unSummableNumber, inputs).OrderBy(s => s); var key = attackResults.First() + attackResults.Last(); Console.WriteLine(key); }
public void AttackUnsummableNumber_GivenValidMessageAndNumber_ReturnsExpectedResults() { var message = new long[] { 35, 20, 15, 25, 47, 40, 62, 55, 65, 95, 102, 117, 150, 182, 127, 219, 299, 277, 309, 576 }; var unSummableNumber = 127L; var expectedResults = new long[] { 15, 25, 47, 40 }; var sut = new Cracker(); var result = sut.AttackUnsummableNumber(unSummableNumber, message); Assert.Equal(expectedResults, result); }