Beispiel #1
0
        public static int Run(string input)
        {
            var sum = 0;
            //input = _input;
            var groups = InputUtils.SplitInputByBlankLines(input);

            foreach (var group in groups)
            {
                var matchedChars = new List <char>();
                var lines        = InputUtils.SplitLinesIntoStringArray(group);
                for (int j = 0; j < lines.Length; j++)
                {
                    var line = lines[j];
                    if (j == 0)
                    {
                        matchedChars = lines[0].ToCharArray().ToList();
                        continue;
                    }
                    var stillMatchedChars = new List <char>(matchedChars);
                    for (int i = 0; i < matchedChars.Count; i++)
                    {
                        var matchedChar = matchedChars[i];
                        if (matchedChar >= 'a' && matchedChar <= 'z' && !line.Contains(matchedChar))
                        {
                            stillMatchedChars.Remove(matchedChar);
                        }
                    }
                    matchedChars = stillMatchedChars;
                }
                sum += matchedChars.Count;
            }
            return(sum);
        }
Beispiel #2
0
        public static int Run(string input)
        {
            var valid     = 0;
            var passports = InputUtils.SplitInputByBlankLines(input);

            foreach (var passport in passports)
            {
                var passportDict = new Dictionary <string, string>();
                var tokens       = passport.Split(new char[] { '\r', '\n', ':', ' ' });
                var validTokens  = tokens.Where(x => x.Length > 0).ToList();
                for (int i = 0; i < validTokens.Count(); i += 2)
                {
                    passportDict.Add(validTokens[i], validTokens[i + 1]);
                }
                if (passportDict.ContainsKey("ecl") && passportDict.ContainsKey("pid") && passportDict.ContainsKey("eyr") && passportDict.ContainsKey("hcl") && passportDict.ContainsKey("byr") &&
                    passportDict.ContainsKey("iyr") && passportDict.ContainsKey("hgt"))
                {
                    if (ValidateFields(passportDict))
                    {
                        valid++;
                    }
                }
            }
            return(valid);
        }