Program.cs 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using Day4;
  2. if (args.Length < 1)
  3. {
  4. Console.WriteLine("Requires 1 args: inputFileName");
  5. return -1;
  6. }
  7. var inputFile = args[0];
  8. var parser = new ScratchParser();
  9. var cards = parser.Parse(inputFile).ToList();
  10. var sum = 0;
  11. foreach (var card in cards)
  12. {
  13. var score = card.GetScore();
  14. sum += score;
  15. }
  16. Console.WriteLine();
  17. Console.WriteLine($"Total Score: {sum}");
  18. var copies = new Dictionary<int, int>();
  19. sum = 0;
  20. foreach (var item in cards.Select((c, i) => (card: c, index: i)))
  21. {
  22. var matches = item.card.GetMatches();
  23. var copyCount = copies.GetValueOrDefault(item.index, 0) + 1;
  24. Console.WriteLine($"{item.index}: {matches} matches - {copyCount} copies");
  25. for (var i = 1; i <= matches; i++)
  26. {
  27. if (!copies.ContainsKey(item.index + i))
  28. {
  29. copies[item.index + i] = 0;
  30. }
  31. copies[item.index + i] += copyCount;
  32. }
  33. sum += copyCount;
  34. }
  35. Console.WriteLine();
  36. Console.WriteLine($"Card Count: {sum}");
  37. return 0;