Ejemplo n.º 1
0
        private static IList <CustomsDeclarationFormGroup> GetDay06Input()
        {
            string filePath = Path.Combine(Directory.GetCurrentDirectory(), "InputData", FILE_NAME);

            if (!File.Exists(filePath))
            {
                throw new Exception($"Cannot locate file {filePath}");
            }

            var inputLines = File.ReadAllLines(filePath);
            var result     = CustomsDeclarationFormHelper.ParseInput(inputLines);

            return(result);
        }
Ejemplo n.º 2
0
        public static int GetDay06Part01Answer()
        {
            // --- Day 6: Custom Customs ---
            // As your flight approaches the regional airport where you'll switch to a much larger plane, customs declaration forms are distributed to the passengers.
            // The form asks a series of 26 yes - or - no questions marked a through z.All you need to do is identify the questions for which anyone in your group answers "yes".Since your group is just you, this doesn't take very long.
            // However, the person sitting next to you seems to be experiencing a language barrier and asks if you can help. For each of the people in their group, you write down the questions for which they answer "yes", one per line.For example:
            // abcx
            // abcy
            // abcz
            // In this group, there are 6 questions to which anyone answered "yes": a, b, c, x, y, and z. (Duplicate answers to the same question don't count extra; each question counts at most once.)
            // Another group asks for your help, then another, and eventually you've collected answers from every group on the plane (your puzzle input). Each group's answers are separated by a blank line, and within each group, each person's answers are on a single line. For example:
            // abc
            //
            // a
            // b
            // c
            //
            // ab
            // ac
            //
            // a
            // a
            // a
            // a
            //
            // b
            // This list represents answers from five groups:
            // The first group contains one person who answered "yes" to 3 questions: a, b, and c.
            // The second group contains three people; combined, they answered "yes" to 3 questions: a, b, and c.
            // The third group contains two people; combined, they answered "yes" to 3 questions: a, b, and c.
            // The fourth group contains four people; combined, they answered "yes" to only 1 question, a.
            // The last group contains one person who answered "yes" to only 1 question, b.
            // In this example, the sum of these counts is 3 + 3 + 3 + 1 + 1 = 11.
            // For each group, count the number of questions to which anyone answered "yes".What is the sum of those counts?
            // Answer: 7120
            var groups = GetDay06Input();
            var result = groups.Select(g => CustomsDeclarationFormHelper.GetUniqueAnswersInGroup(g).Count).Sum();

            return(result);
        }
Ejemplo n.º 3
0
        public static int GetDay06Part02Answer()
        {
            // --- Part Two ---
            // As you finish the last group's customs declaration, you notice that you misread one word in the instructions:
            // You don't need to identify the questions to which anyone answered "yes"; you need to identify the questions to which everyone answered "yes"!
            // Using the same example as above:
            //
            // abc
            //
            // a
            // b
            // c
            //
            // ab
            // ac
            //
            // a
            // a
            // a
            // a
            //
            // b
            //
            // This list represents answers from five groups:
            // In the first group, everyone (all 1 person) answered "yes" to 3 questions: a, b, and c.
            // In the second group, there is no question to which everyone answered "yes".
            // In the third group, everyone answered yes to only 1 question, a.Since some people did not answer "yes" to b or c, they don't count.
            // In the fourth group, everyone answered yes to only 1 question, a.
            // In the fifth group, everyone (all 1 person) answered "yes" to 1 question, b.
            // In this example, the sum of these counts is 3 + 0 + 1 + 1 + 1 = 6.
            // For each group, count the number of questions to which everyone answered "yes".What is the sum of those counts?
            // Answer: 3570
            var groups = GetDay06Input();
            var result = groups.Select(g => CustomsDeclarationFormHelper.GetUnanimousAnswersInGroup(g).Count).Sum();

            return(result);
        }