public void OnConfigurePlugin(object o, EventArgs args)
        {
            Configuration config = new Configuration(MembershipTypeSchema.Get(), UsernameSchema.Get(),
                                                     PasswordSchema.Get());

            config.Run();
            config.Destroy();
        }
Ejemplo n.º 2
0
        private static bool IsValid(Rule rule, PasswordSchema schema, string password)
        {
            if (rule == Rule.Q1)
            {
                var characterCountInPassword = password.ToCharArray().Count(c => c == schema.Character);
                return(characterCountInPassword >= schema.FirstPosition && characterCountInPassword <= schema.SecondPosition);
            }

            if (rule == Rule.Q2)
            {
                var position1Correct =
                    password.Length + 1 > schema.FirstPosition && password[schema.FirstPosition - 1] == schema.Character;
                var position2Correct =
                    password.Length + 1 > schema.SecondPosition && password[schema.SecondPosition - 1] == schema.Character;

                return((position1Correct && !position2Correct) || (!position1Correct && position2Correct));
            }

            return(false);
        }
Ejemplo n.º 3
0
        public static int Solve(Rule rule)
        {
            var pathToInputs       = @"/Users/tomaszszymaniec/Documents/Coding/Classic/AdventOfCode/2020/inputs/q2.txt";
            var passwordsWithRules = Tools.ReadText(pathToInputs);

            var validPasswords   = 0;
            var invalidPasswords = 0;

            foreach (var passwordWithRule in passwordsWithRules)
            {
                if (!passwordWithRule.Contains(':'))
                {
                    throw new Exception($"Unexpected password with rule: {passwordWithRule}");
                }
                var elements = passwordWithRule.Split(':');
                if (elements.Length != 2)
                {
                    throw new Exception($"Unexpected password with rule: {passwordWithRule}");
                }
                var ruleString = elements[0];
                var password   = elements[1].Trim();
                var schema     = new PasswordSchema(ruleString);

                if (IsValid(rule, schema, password))
                {
                    Console.WriteLine($"Valid password: {passwordWithRule}");
                    validPasswords++;
                }
                else
                {
                    Console.WriteLine($"Invalid password: {passwordWithRule}");
                    invalidPasswords++;
                }
            }

            Console.WriteLine($"Valid={validPasswords}, Invalid={invalidPasswords}");

            return(validPasswords);
        }