-
Notifications
You must be signed in to change notification settings - Fork 5
/
Program.cs
40 lines (31 loc) · 1.01 KB
/
Program.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
using AdventOfCode;
using System.Reflection;
using System.Text;
Console.OutputEncoding = Encoding.UTF8;
var usage = @"
Usage: dotnet run [year] [day]
year: The year of the puzzle to solve. Defaults to the current year.
day: The day of the puzzle to solve. Defaults to the current day.
";
var solutions = Assembly
.GetEntryAssembly()!
.GetTypes()
.Where(t => t.IsClass && !t.IsAbstract && typeof(Solution).IsAssignableFrom(t))
.Select(t => (Solution)Activator.CreateInstance(t)!);
var year = int.TryParse(Environment.GetCommandLineArgs().ElementAtOrDefault(1), out var parsedYear) ?
parsedYear :
DateTime.Now.Year;
var day = int.TryParse(Environment.GetCommandLineArgs().ElementAtOrDefault(2), out var parsedDay) ?
parsedDay :
DateTime.Now.Day;
var solution = solutions.FirstOrDefault(s => s.Year == year && s.Day == day);
if (solution is null)
{
Console.WriteLine($"No solution found for year {year} and day {day}.");
Console.WriteLine(usage);
return;
}
else
{
solution.RunSolution();
}