예제 #1
0
        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);
        }
예제 #2
0
 public bool ShouldChangeState(CubeDay17 cube, int neighbours)
 {
     if (cube.IsOccupied())
     {
         return(!(neighbours == 2 || neighbours == 3));
     }
     else
     {
         return(neighbours == 3);
     }
 }
예제 #3
0
        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);
        }