Day 6: Add O(n) implementation

This commit is contained in:
Stefan Forstenlechner 2021-12-06 21:06:45 +01:00
parent 14d274e5d8
commit b38bcebc93
1 changed files with 14 additions and 0 deletions

14
Day6.cs
View File

@ -1,5 +1,6 @@
#define Day6 #define Day6
#if Day6 #if Day6
using System.Diagnostics;
var fish = File.ReadAllText("day6/input").Split(",") var fish = File.ReadAllText("day6/input").Split(",")
.Select(long.Parse) .Select(long.Parse)
.GroupBy(x => x) .GroupBy(x => x)
@ -31,4 +32,17 @@ Dictionary<long, long> Copy(Dictionary<long, long> dict) {
return dict.ToDictionary(entry => entry.Key, return dict.ToDictionary(entry => entry.Key,
entry => entry.Value); entry => entry.Value);
} }
// O(n)
long[] fishAsArray = fish.OrderBy(x => x.Key).Select(x => x.Value).ToArray();
int i = 0;
int days = 256;
int spawn = 6;
while (days > 0) {
int newSpawn = (i + 7) % 9;
fishAsArray[newSpawn] += fishAsArray[i];
i = (i + 1) % 9;
days--;
}
Console.WriteLine(fishAsArray.Sum());
#endif #endif