add Day.RunFromArgs to remove duplicate functionality in each year
continuous-integration/drone/push Build is failing
Details
continuous-integration/drone/push Build is failing
Details
This commit is contained in:
parent
789247aedf
commit
0b623caa0a
|
@ -7,5 +7,6 @@
|
|||
<ItemGroup>
|
||||
<Using Include="System.Diagnostics" />
|
||||
<Using Include="System.Numerics" />
|
||||
<Using Include="System.Reflection" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
|
@ -10,7 +10,7 @@ public abstract class Day
|
|||
}
|
||||
|
||||
public static bool UseTestInput { get; set; }
|
||||
|
||||
|
||||
public int Year { get; }
|
||||
public int DayNumber { get; }
|
||||
public string PuzzleName { get; }
|
||||
|
@ -25,9 +25,9 @@ public abstract class Day
|
|||
public abstract object Part1();
|
||||
public abstract object Part2();
|
||||
|
||||
public void AllParts(bool verbose = true)
|
||||
private void AllParts(bool verbose = true)
|
||||
{
|
||||
Console.WriteLine($"Day {DayNumber,2}: {PuzzleName}");
|
||||
Console.WriteLine($"{Year} Day {DayNumber,2}: {PuzzleName}");
|
||||
var s = Stopwatch.StartNew();
|
||||
var part1 = Part1();
|
||||
s.Stop();
|
||||
|
@ -44,4 +44,30 @@ public abstract class Day
|
|||
|
||||
Console.WriteLine();
|
||||
}
|
||||
}
|
||||
|
||||
public static void RunFromArgs(string[] args)
|
||||
{
|
||||
var days = Assembly.GetEntryAssembly()?.GetTypes()
|
||||
.Where(t => t.BaseType == typeof(Day))
|
||||
.Select(t => (Activator.CreateInstance(t) as Day)!)
|
||||
.OrderBy(d => d.DayNumber)
|
||||
.ToList();
|
||||
|
||||
if (days == null || !days.Any())
|
||||
{
|
||||
throw new ApplicationException("no days found");
|
||||
}
|
||||
|
||||
|
||||
if (args.Length == 1 && int.TryParse(args[0], out var dayNum))
|
||||
{
|
||||
var day = days.FirstOrDefault(d => d.DayNumber == dayNum);
|
||||
if (day != null) day.AllParts();
|
||||
else Console.WriteLine($"Day {dayNum} invalid or not yet implemented");
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var d in days) d.AllParts();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,15 +1 @@
|
|||
var days = Assembly.GetExecutingAssembly().GetTypes()
|
||||
.Where(t => t.BaseType == typeof(Day))
|
||||
.Select(t => (Activator.CreateInstance(t) as Day)!)
|
||||
.OrderBy(d => d.DayNumber);
|
||||
|
||||
if (args.Length == 1 && int.TryParse(args[0], out var dayNum))
|
||||
{
|
||||
var day = days.FirstOrDefault(d => d.DayNumber == dayNum);
|
||||
if (day != null) day.AllParts();
|
||||
else Console.WriteLine($"Day {dayNum} invalid or not yet implemented");
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var d in days) d.AllParts();
|
||||
}
|
||||
Day.RunFromArgs(args);
|
|
@ -1,15 +1 @@
|
|||
var days = Assembly.GetExecutingAssembly().GetTypes()
|
||||
.Where(t => t.BaseType == typeof(Day))
|
||||
.Select(t => (Activator.CreateInstance(t) as Day)!)
|
||||
.OrderBy(d => d.DayNumber);
|
||||
|
||||
if (args.Length == 1 && int.TryParse(args[0], out var dayNum))
|
||||
{
|
||||
var day = days.FirstOrDefault(d => d.DayNumber == dayNum);
|
||||
if (day != null) day.AllParts();
|
||||
else Console.WriteLine($"Day {dayNum} invalid or not yet implemented");
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var d in days) d.AllParts();
|
||||
}
|
||||
Day.RunFromArgs(args);
|
|
@ -1,15 +1 @@
|
|||
var days = Assembly.GetExecutingAssembly().GetTypes()
|
||||
.Where(t => t.BaseType == typeof(Day))
|
||||
.Select(t => (Activator.CreateInstance(t) as Day)!)
|
||||
.OrderBy(d => d.DayNumber);
|
||||
|
||||
if (args.Length == 1 && int.TryParse(args[0], out var dayNum))
|
||||
{
|
||||
var day = days.FirstOrDefault(d => d.DayNumber == dayNum);
|
||||
if (day != null) day.AllParts();
|
||||
else Console.WriteLine($"Day {dayNum} invalid or not yet implemented");
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var d in days) d.AllParts();
|
||||
}
|
||||
Day.RunFromArgs(args);
|
|
@ -1,15 +1 @@
|
|||
var days = Assembly.GetExecutingAssembly().GetTypes()
|
||||
.Where(t => t.BaseType == typeof(Day))
|
||||
.Select(t => (Activator.CreateInstance(t) as Day)!)
|
||||
.OrderBy(d => d.DayNumber);
|
||||
|
||||
if (args.Length == 1 && int.TryParse(args[0], out var dayNum))
|
||||
{
|
||||
var day = days.FirstOrDefault(d => d.DayNumber == dayNum);
|
||||
if (day != null) day.AllParts();
|
||||
else Console.WriteLine($"Day {dayNum} invalid or not yet implemented");
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var d in days) d.AllParts();
|
||||
}
|
||||
Day.RunFromArgs(args);
|
Loading…
Reference in New Issue