| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- using Day4;
- if (args.Length < 1)
- {
- Console.WriteLine("Requires 1 args: inputFileName");
- return -1;
- }
- var inputFile = args[0];
- var parser = new ScratchParser();
- var cards = parser.Parse(inputFile).ToList();
- var sum = 0;
- foreach (var card in cards)
- {
- var score = card.GetScore();
- sum += score;
- }
- Console.WriteLine();
- Console.WriteLine($"Total Score: {sum}");
- var copies = new Dictionary<int, int>();
- sum = 0;
- foreach (var item in cards.Select((c, i) => (card: c, index: i)))
- {
- var matches = item.card.GetMatches();
- var copyCount = copies.GetValueOrDefault(item.index, 0) + 1;
- Console.WriteLine($"{item.index}: {matches} matches - {copyCount} copies");
- for (var i = 1; i <= matches; i++)
- {
- if (!copies.ContainsKey(item.index + i))
- {
- copies[item.index + i] = 0;
- }
- copies[item.index + i] += copyCount;
- }
- sum += copyCount;
- }
- Console.WriteLine();
- Console.WriteLine($"Card Count: {sum}");
- return 0;
|