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(); 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;