diff --git a/2015/Day-06/Day06.cs b/2015/Day-06/Day06.cs new file mode 100644 index 0000000..b45f68d --- /dev/null +++ b/2015/Day-06/Day06.cs @@ -0,0 +1,77 @@ +// Define a 2D array to hold the light values. +bool[,] lights = new bool[1000,1000]; +int[,] brightness = new int[1000,1000]; + +// Parse the instructions. +foreach(string line in File.ReadLines("input.txt")){ + string[] words = line.Split(' '); + string action = string.Empty; + string start = string.Empty; + string end = string.Empty; + + switch(words[0]){ + case "turn": + action = words[1]; + start = words[2]; + end = words[4]; + break; + case "toggle": + action = words[0]; + start = words[1]; + end = words[3]; + break; + } + + int startX = Int32.Parse(start.Split(',')[0]); + int startY = Int32.Parse(start.Split(',')[1]); + int endX = Int32.Parse(end.Split(',')[0]); + int endY = Int32.Parse(end.Split(',')[1]); + + // Iterate through the x numbers. + for(int x = startX; x <= endX; x++){ + // Iterate through the y values for this row. + for(int y = startY; y <= endY; y++){ + switch(action){ + case "on": + lights[x,y] = true; + brightness[x,y]++; + break; + case "off": + lights[x,y] = false; + if(brightness[x,y] > 0){ + brightness[x,y]--; + } + break; + case "toggle": + brightness[x,y] += 2; + switch(lights[x,y]){ + case true: + lights[x,y] = false; + break; + case false: + lights[x,y] = true; + break; + } + break; + } + } + } +} + +// Count up how many lights are on. +int lightsOn = 0; +foreach(bool light in lights){ + if(light == true){ + lightsOn++; + } +} + +// Count up the total brightness. +int totalBrightness = 0; +foreach(int level in brightness){ + totalBrightness += level; +} + +// Print totals. +Console.WriteLine("Part 1: " + lightsOn); +Console.WriteLine("Part 2: " + totalBrightness);