feat: solved day 11 part 1 and part 2

This commit is contained in:
Stevan Freeborn
2024-12-12 00:01:22 -06:00
parent 2ed18de263
commit 31c55f5ec0
5 changed files with 151 additions and 68 deletions
+45
View File
@@ -0,0 +1,45 @@
namespace PlutonianPebbles;
class Observer
{
private readonly List<Stone> _stones;
private Observer(List<Stone> stones)
{
_stones = stones;
}
public static Observer Of(List<Stone> stones) => new(stones);
public long Blink(int times)
{
var stoneCounts = _stones.GroupBy(s => s)
.ToDictionary(g => g.Key, g => (long)g.Count());
for (var blinks = 0; blinks < times; blinks++)
{
var nextCounts = new Dictionary<Stone, long>();
foreach (var (stone, count) in stoneCounts)
{
var transformed = stone.Transform();
foreach (var result in transformed)
{
if (nextCounts.ContainsKey(result))
{
nextCounts[result] += count;
}
else
{
nextCounts[result] = count;
}
}
}
stoneCounts = nextCounts;
}
return stoneCounts.Values.Sum();
}
}