Esempio n. 1
0
        public Today()
        {
            var lastDay = FindLastDay();

            AdventDay = (IAdventDay)Activator.CreateInstance(lastDay);

            ProblemPart1 = AdventDay.ProblemPart1;
            ProblemPart2 = AdventDay.ProblemPart2;
        }
Esempio n. 2
0
        private static void Solve(IAdventDay adventDay, bool a)
        {
            DateTime start  = DateTime.Now;
            string   output = a ? adventDay.A() : adventDay.B();
            TimeSpan time   = DateTime.Now.Subtract(start);

            string title = $"{adventDay.Year} {adventDay.Day:00}" + (a ? 'A' : 'B');

            Console.WriteLine($"{title} {output,-(80 - 24)}{time}");
        }
Esempio n. 3
0
        public static async Task <int> RunDays(int[] days)
        {
            var dayInterface            = typeof(IAdventDay);
            IEnumerable <Type> dayTypes =
                typeof(Program).Assembly.GetTypes()
                .Where(o => dayInterface.IsAssignableFrom(o) && o.IsClass && !o.IsAbstract).Memoize();

            if (days.Any())
            {
                dayTypes = days.Select(dayNumber => dayTypes.Single(type => type.Name == "Day" + dayNumber)).ToList();
            }

            // Just show the latest day by default
            foreach (var dayType in dayTypes)
            {
                IAdventDay day   = (IAdventDay)Activator.CreateInstance(dayType);
                var        input = await File.ReadAllTextAsync($"Input/{dayType.Name}.txt");

                try
                {
                    Console.WriteLine($"{dayType.Name} - Part 1");
                    var timer = Stopwatch.StartNew();
                    Console.WriteLine("{0}\n{1}", day.RunPart1(input), timer.Elapsed);
                    Console.WriteLine();
                }
                catch (NotImplementedException)
                {
                    Console.WriteLine("Not Completed!");
                }

                try
                {
                    Console.WriteLine($"{dayType.Name} - Part 2");
                    var timer = Stopwatch.StartNew();
                    Console.WriteLine("{0}\n{1}", day.RunPart2(input), timer.Elapsed);
                }
                catch (NotImplementedException)
                {
                    Console.WriteLine("Not Completed!");
                }

                Console.WriteLine();
            }

            return(0);
        }