コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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);
        }