コード例 #1
0
        public void Crack_GivenValidXMASMessages_ReturnsExpectedResults(int preambleLength, int requiredTerms, IEnumerable <long> message, IEnumerable <long> expectedResults)
        {
            var sut    = new Cracker();
            var result = sut.FindUnsummableNumbers(preambleLength, requiredTerms, message);

            Assert.Equal(expectedResults, result);
        }
コード例 #2
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);
        }
コード例 #3
0
        public void Crack_PreambleSameSizeAsMessage_ThrowsException()
        {
            var sut = new Cracker();

            _ = Assert.Throws <ArgumentException>(() => sut.FindUnsummableNumbers(3, 2, new long[] { 1, 2, 3 }));
        }
コード例 #4
0
        public void Crack_RequiredTermsLargerThanPreamble_ThrowsException()
        {
            var sut = new Cracker();

            _ = Assert.Throws <ArgumentException>(() => sut.FindUnsummableNumbers(10, 11, new long[] { }));
        }
コード例 #5
0
        public void Crack_GivenZeroRequiredTerms_ThrowsException()
        {
            var sut = new Cracker();

            _ = Assert.Throws <ArgumentException>(() => sut.FindUnsummableNumbers(1, 0, new long[] { }));
        }