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); }
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); }
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); }
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); }
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); }