Beispiel #1
0
        /// <summary>
        /// Try get two numbers from string.
        /// </summary>
        /// <exception cref="ArgumentException">Thrown when line
        /// contains not allowed character or not enougth parameters.</exception>
        /// <exception cref="ArgumentOutOfRangeException">Thrown when X (width) or Y (heght) are out of game range.</exception>
        private IPoint TryGetPoint(string inputArgsStr)
        {
            // Validate first line that contain two argument
            LayerValidations.LayerDimensionsStr(inputArgsStr, GeneralConstants.LayerDimension);

            var separators = new char[] { ' ' };
            var args       = inputArgsStr
                             .Split(separators, StringSplitOptions.RemoveEmptyEntries)
                             .ToList();

            LayerValidations.Dimensions(args);

            var dimensionRows = int.Parse(args[0]);

            int dimensionColumns = int.Parse(args[1]);

            var point = new Point(dimensionRows, dimensionColumns);

            return(point);
        }
Beispiel #2
0
        /// <summary>
        /// Get all brick part nymber from input string.
        /// </summary>
        /// <param name="inputArgsStr">Row that contains all brick parts.</param>
        /// <returns>Return list of brick part numbers. </returns>
        private List <int> GetAllRowNumbers(string inputArgsStr)
        {
            var maxBrickNumber = this.GetLayerTargetBrickCount();
            var layerColumns   = this.GetLayerColumns();

            // Validate written numbers in a row
            LayerValidations.BrickPartsRowPattern(inputArgsStr, layerColumns, maxBrickNumber);

            var separators = new char[] { ' ' };
            var args       = inputArgsStr
                             .Split(separators, StringSplitOptions.RemoveEmptyEntries)
                             .Select(int.Parse)
                             .ToList();

            // Validate row written numbers range
            LayerValidations.RowWrittenNumbersRange(args, maxBrickNumber, layerColumns);

            // Validate brick
            var state = this.GetLayerState();

            LayerValidations.BricksPart(args, state, this.Bricks);

            return(args);
        }