public void OnConfigurePlugin(object o, EventArgs args) { Configuration config = new Configuration(MembershipTypeSchema.Get(), UsernameSchema.Get(), PasswordSchema.Get()); config.Run(); config.Destroy(); }
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); }
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); }