Exemplo n.º 1
0
            public override object SolvePartOne()
            {
                var count = 0;

                foreach (var line in Lines)
                {
                    var minOccurence = PasswordParser.ParseLowerBound(line);
                    var maxOccurence = PasswordParser.ParseUpperBound(line);
                    var character    = PasswordParser.ParseCharacter(line);
                    var password     = PasswordParser.ParsePassword(line);

                    var occurence = 0;
                    foreach (var ch in password)
                    {
                        if (character == ch)
                        {
                            occurence++;
                        }
                    }

                    if (minOccurence <= occurence && occurence <= maxOccurence)
                    {
                        count++;
                    }
                }

                return(count);
            }
Exemplo n.º 2
0
        public void Test_DayTwoPartOneExample()
        {
            var input = "1-3 a: abcde\n" +
                        "1-3 b: cdefg\n" +
                        "2-9 c: ccccccccc\n";
            var passwords = PasswordParser.Parse(input).ToList();

            Assert.AreEqual(3, passwords.Count());
            Assert.IsTrue(passwords[0].IsValidCharCount);
            Assert.IsFalse(passwords[1].IsValidCharCount);
            Assert.IsTrue(passwords[2].IsValidCharCount);
            Assert.AreEqual(2, passwords.Count(p => p.IsValidCharCount));
        }
        public void ParseLowerBoundTest()
        {
            //Given
            var line1 = "1-3 c: abcde";
            var line2 = "1-3 b: 2-5 7-9";
            var line3 = "13-9 c: ";

            //When
            var lowerBound1 = PasswordParser.ParseLowerBound(line1);
            var lowerBound2 = PasswordParser.ParseLowerBound(line2);
            var lowerBound3 = PasswordParser.ParseLowerBound(line3);

            //Then
            Assert.Equal(1, lowerBound1);
            Assert.Equal(1, lowerBound2);
            Assert.Equal(13, lowerBound3);
        }
        public void ParsePasswordTest()
        {
            //Given
            var line1 = "1-3 c: abcde";
            var line2 = "1-3 b: 2-5 7-9";
            var line3 = "13-9 c: ";

            //When
            var pass1 = PasswordParser.ParsePassword(line1);
            var pass2 = PasswordParser.ParsePassword(line2);
            var pass3 = PasswordParser.ParsePassword(line3);

            //Then
            Assert.Equal("abcde", pass1);
            Assert.Equal("2-5 7-9", pass2);
            Assert.Equal("", pass3);
        }
        public void ParseCharTest()
        {
            //Given
            var line1 = "1-3 c: abcde";
            var line2 = "1-3 b: 2-5 7-9";
            var line3 = "13-9 c: ";

            //When
            var char1 = PasswordParser.ParseCharacter(line1);
            var char2 = PasswordParser.ParseCharacter(line2);
            var char3 = PasswordParser.ParseCharacter(line3);

            //Then
            Assert.Equal('c', char1);
            Assert.Equal('b', char2);
            Assert.Equal('c', char3);
        }
Exemplo n.º 6
0
            public override object SolvePartTwo()
            {
                var count = 0;

                foreach (var line in Lines)
                {
                    var pos1      = PasswordParser.ParseLowerBound(line);
                    var pos2      = PasswordParser.ParseUpperBound(line);
                    var character = PasswordParser.ParseCharacter(line);
                    var password  = PasswordParser.ParsePassword(line);

                    var ch1 = password[pos1 - 1];
                    var ch2 = password[pos2 - 1];

                    if ((ch1 == character) ^ (ch2 == character))
                    {
                        count++;
                    }
                }

                return(count);
            }
Exemplo n.º 7
0
 public Day02() : base(02, 2020, "Password Philosophy")
 {
     Passwords = PasswordParser.Parse(Input);
 }