|
|
@@ -8,16 +8,38 @@ if (args.Length < 1)
|
|
|
|
|
|
var inputFile = args[0];
|
|
|
var parser = new ScratchParser();
|
|
|
+var cards = parser.Parse(inputFile).ToList();
|
|
|
|
|
|
var sum = 0;
|
|
|
-foreach (var card in parser.Parse(inputFile))
|
|
|
+foreach (var card in cards)
|
|
|
{
|
|
|
var score = card.GetScore();
|
|
|
- Console.WriteLine($"{card.Id}: {score}");
|
|
|
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;
|