protected CubeDay17[,,] ProcessInputToArray(int depth) { var path = PuzzleUtils.PuzzleInputsPath; var input = FileReader.ReadFile(path, inputFileileName, fileExt); var width = input[0].Trim().Length; var height = input.Count; var maxWidth = width + 2 * depth; var maxHeight = height + 2 * depth; var maxDepth = 1 + 2 * depth; var cubes = new CubeDay17[maxHeight, maxWidth, maxDepth]; for (int i = 0; i < maxHeight; i++) { for (int j = 0; j < maxWidth; j++) { for (int k = 0; k < maxDepth; k++) { if (k == depth + 1 && i > depth - 1 && j > depth - 1 && i < height + depth && j < width + depth) { cubes[i, j, k] = new CubeDay17(input[i - depth].Trim()[j - depth]); } else { cubes[i, j, k] = new CubeDay17('.'); } } } } return(cubes); }
public bool ShouldChangeState(CubeDay17 cube, int neighbours) { if (cube.IsOccupied()) { return(!(neighbours == 2 || neighbours == 3)); } else { return(neighbours == 3); } }
protected CubeDay17[,,,] ProcessInputToArray(int depth) { var path = PuzzleUtils.PuzzleInputsPath; var input = FileReader.ReadFile(path, inputFileileName, fileExt); var width = input[0].Trim().Length; var height = input.Count; var maxWidth = width + 2 * depth; var maxHeight = height + 2 * depth; var maxDepth = 1 + 2 * depth; var max4th = 1 + 2 * depth; var cubes = new CubeDay17[maxHeight, maxWidth, maxDepth, max4th]; for (int x = 0; x < maxHeight; x++) { for (int y = 0; y < maxWidth; y++) { for (int z = 0; z < maxDepth; z++) { for (int w = 0; w < max4th; w++) { if (z == depth + 1 && w == depth + 1 && x > depth - 1 && y > depth - 1 && x < height + depth && y < width + depth) { cubes[x, y, z, w] = new CubeDay17(input[x - depth].Trim()[y - depth]); } else { cubes[x, y, z, w] = new CubeDay17('.'); } } } } } return(cubes); }