public Today() { var lastDay = FindLastDay(); AdventDay = (IAdventDay)Activator.CreateInstance(lastDay); ProblemPart1 = AdventDay.ProblemPart1; ProblemPart2 = AdventDay.ProblemPart2; }
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}"); }
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); }