Program.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using Day2;
  2. if (args.Length < 2)
  3. {
  4. Console.WriteLine("Requires 2 args: inputFileName expected");
  5. return -1;
  6. }
  7. var inputFile = args[0];
  8. var numbers = args[1].Split(',').Select(x => int.Parse(x)).ToList();
  9. if (numbers.Count < 3)
  10. {
  11. Console.WriteLine("Requires 3 expected values R,G,B");
  12. return -1;
  13. }
  14. var expected = new SampleSet(numbers[0], numbers[1], numbers[2]);
  15. var parser = new GameParser();
  16. var sum = 0;
  17. foreach (var game in parser.Parse(inputFile))
  18. {
  19. //game.Print();
  20. var pass = true;
  21. foreach (var set in game.Samples)
  22. {
  23. if (set.Red > expected.Red || set.Green > expected.Green || set.Blue > expected.Blue)
  24. {
  25. pass = false;
  26. break;
  27. }
  28. }
  29. if (pass)
  30. {
  31. //Console.WriteLine("PASS");
  32. sum += game.Id;
  33. }
  34. else
  35. {
  36. //Console.WriteLine("FAIL");
  37. }
  38. Console.WriteLine();
  39. }
  40. Console.WriteLine();
  41. Console.WriteLine($"Part 1 sum: {sum}");
  42. Console.WriteLine();
  43. sum = 0;
  44. foreach (var game in parser.Parse(inputFile))
  45. {
  46. game.Print();
  47. var max = game.Samples.Aggregate(new SampleSet(0, 0, 0), (prev, current) => new SampleSet(
  48. Math.Max(prev.Red, current.Red),
  49. Math.Max(prev.Green, current.Green),
  50. Math.Max(prev.Blue, current.Blue)
  51. ));
  52. Console.WriteLine($"Max: {max.Power()}");
  53. max.Print();
  54. sum += max.Power();
  55. Console.WriteLine();
  56. }
  57. Console.WriteLine();
  58. Console.WriteLine($"Part 2 sum of powers: {sum}");
  59. return 0;