| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- 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;
|