using Day6; if (args.Length < 1) { Console.WriteLine("Requires 1 args: inputFileName"); return -1; } var inputFile = args[0]; var parser = new RaceTimeParser(); var races = parser.Parse(inputFile); var total = 1L; foreach (var race in races) { var bound = race.LowerBound(); Console.WriteLine($"{race.Duration} / {race.Distance} => {bound}"); var options = race.Duration - 2 * bound + 1; Console.WriteLine($"Options: {options}"); total *= options; } Console.WriteLine(); Console.WriteLine($"Total: {total}"); var combinedTime = 0L; var combinedDistance = 0L; foreach (var race in races) { combinedTime = combinedTime * (long)Math.Pow(10, (int)Math.Ceiling(Math.Log10(race.Duration))) + race.Duration; combinedDistance = combinedDistance * (long)Math.Pow(10, (int)Math.Ceiling(Math.Log10(race.Distance))) + race.Distance; } var actualRace = new RaceStats(combinedTime, combinedDistance); var actualBound = actualRace.LowerBound(); Console.WriteLine($"{actualRace.Duration} / {actualRace.Distance} => {actualBound}"); var actualOptions = actualRace.Duration - 2 * actualBound + 1; Console.WriteLine($"Options: {actualOptions}"); return 0;