#define Day6 #if Day6 var fish = File.ReadAllText("day6/input").Split(",") .Select(long.Parse) .GroupBy(x => x) .ToDictionary(x => x.Key, x => x.LongCount()); fish[0] = 0; fish[6] = 0; fish[7] = 0; fish[8] = 0; Console.WriteLine(CalculateGrowth(80, Copy(fish))); Console.WriteLine(CalculateGrowth(256, Copy(fish))); long CalculateGrowth(int numberOfDays, Dictionary fishState) { while (numberOfDays > 0) { long newFish = fishState[0]; for (int i = 0; i < 8; i++) { fishState[i] = fishState[i + 1]; } fishState[6] += newFish; fishState[8] = newFish; numberOfDays--; } return fishState.Values.Sum(); } Dictionary Copy(Dictionary dict) { return dict.ToDictionary(entry => entry.Key, entry => entry.Value); } #endif