Ejemplo n.º 1
0
        static void AssignPPField(string item, ref Day4Passport pp)
        {
            int num;

            switch (item.Substring(0, 3).Trim())
            {
            case "byr":
                if (Int32.TryParse(item.Substring(4).Trim(), out num))
                {
                    pp.byr = num;
                }
                break;

            case "iyr":
                if (Int32.TryParse(item.Substring(4).Trim(), out num))
                {
                    pp.iyr = num;
                }
                break;

            case "eyr":
                if (Int32.TryParse(item.Substring(4).Trim(), out num))
                {
                    pp.eyr = num;
                }
                break;

            case "hgt":
                pp.hgt = item.Substring(4).Trim();
                break;

            case "hcl":
                pp.hcl = item.Substring(4).Trim();
                break;

            case "ecl":
                pp.ecl = item.Substring(4).Trim();
                break;

            case "pid":
                pp.pid = item.Substring(4).Trim();
                break;

            case "cid":
                pp.cid = item.Substring(4).Trim();
                break;

            default:
                Console.WriteLine("invalid: " + item.Substring(0, 3).Trim());
                break;
            }
        }
Ejemplo n.º 2
0
        public static int DayFour()
        {
            var count = 0;
            var input = InputReader.ReadFile("day4.txt");

            for (int i = 0; i < input.Length;)
            {
                //Get batch
                int batchEnd = Array.IndexOf(input, String.Empty, i + 1);
                var pp       = new Day4Passport();
                int index    = i;
                while (index <= batchEnd || batchEnd == -1)
                {
                    var row = input[index].Split(' ');
                    foreach (var ppItem in row)
                    {
                        if (ppItem == String.Empty)
                        {
                            continue;
                        }

                        AssignPPField(ppItem, ref pp);
                    }
                    index++;
                    if (batchEnd == -1)
                    {
                        break;
                    }
                }
                i = index;

                var context = new ValidationContext(pp, serviceProvider: null, items: null);
                var results = new List <ValidationResult>();
                if (Validator.TryValidateObject(pp, context, results, true))
                {
                    if (pp.Validate())
                    {
                        count++;
                    }
                }
            }

            return(count);
        }