Beispiel #1
0
        public static void Main()
        {
            AreaSize brickworkAreaSize = GetAreaSize();

            if (brickworkAreaSize == null)
            {
                return;
            }

            Layer firstLayer = GetFirstLayer(brickworkAreaSize);

            if (firstLayer == null)
            {
                return;
            }

            bool isFirstLayerValid = IsLayerValidForAreSize(brickworkAreaSize, firstLayer);

            if (!isFirstLayerValid)
            {
                return;
            }

            AddMetadataToFistLayer(firstLayer);

            Layer newLayer = BuildLayer(brickworkAreaSize, firstLayer);

            FillBrickNumbers(firstLayer, newLayer);

            PrintLayer(newLayer);
        }
Beispiel #2
0
        private static bool IsLayerValidForAreSize(AreaSize brickworkAreaSize, Layer layer)
        {
            bool isLayerValid = true;

            if ((brickworkAreaSize.Columns * brickworkAreaSize.Lines) != layer.Bricks.Count)
            {
                Console.WriteLine("First layer columns and lines mismatch the brick count.");
            }

            for (int i = 0; i < layer.Bricks.Count; i++)
            {
                Brick brick = layer.Bricks[i];

                bool isBrickValid = IsBrickValid(layer.Bricks, brick);
                if (!isBrickValid)
                {
                    isLayerValid = false;
                    break;
                }
            }

            if (!isLayerValid)
            {
                Console.WriteLine("First layer has invalid data.");
            }

            return(isLayerValid);
        }
Beispiel #3
0
        private static AreaSize GetAreaSize()
        {
            Console.WriteLine("Enter lines and columns for the Area N M");
            string userInput = Console.ReadLine().Trim();

            string[] inputParts = userInput.Split(" ");

            if (inputParts.Length != 2)
            {
                Console.WriteLine("Incorrect parameters");
                return(null);
            }

            AreaSize brickworkAreaSize = new AreaSize();

            for (int i = 0; i < inputParts.Length; i++)
            {
                int intValue;

                if (!int.TryParse(inputParts[i], out intValue))
                {
                    Console.WriteLine("Incorrect parameters - the value is not a number: " + inputParts[i]);
                    return(null);
                }

                if (intValue >= 100)
                {
                    Console.WriteLine("Incorrect parameters - the value is bigger than 100: " + inputParts[i]);
                    return(null);
                }

                if (intValue % 2 != 0)
                {
                    Console.WriteLine("Incorrect parameters - the value is odd: " + inputParts[i]);
                    return(null);
                }

                if (i == 0)
                {
                    brickworkAreaSize.Lines = intValue;
                }

                if (i == 1)
                {
                    brickworkAreaSize.Columns = intValue;
                }
            }

            return(brickworkAreaSize);
        }
Beispiel #4
0
        private static Layer BuildLayer(AreaSize brickworkAreaSize, Layer firstLayer)
        {
            Layer newLayer = new Layer();

            int bricksCount = brickworkAreaSize.Columns * brickworkAreaSize.Lines;

            for (int i = 0; i < bricksCount; i++)
            {
                Brick brick = firstLayer.Bricks[i];

                Brick newBrick = new Brick();

                newBrick.Column = brick.Column;

                newBrick.Line = brick.Line;

                newLayer.Bricks.Add(newBrick);
            }

            return(newLayer);
        }
Beispiel #5
0
        private static Layer GetFirstLayer(AreaSize areaSize)
        {
            Console.WriteLine("Enter first layer");

            Layer firstLayer = new Layer();

            for (int n = 0; n < areaSize.Lines; n++)
            {
                string   userInput  = Console.ReadLine().Trim();
                string[] inputParts = userInput.Split(" ");

                if (inputParts.Length != areaSize.Columns)
                {
                    Console.WriteLine("Incorrect columns parts");
                    return(null);
                }

                for (int m = 0; m < inputParts.Length; m++)
                {
                    int intValue;

                    if (!int.TryParse(inputParts[m].ToString(), out intValue))
                    {
                        Console.WriteLine("Incorrect column value " + inputParts[m]);
                        return(null);
                    }

                    Brick brick = new Brick();
                    brick.Line   = n;
                    brick.Column = m;
                    brick.Number = intValue;


                    firstLayer.Bricks.Add(brick);
                }
            }

            return(firstLayer);
        }