public Grid GetGridFromInputs()
        {
            Grid.GridBuilder builder = Grid.Builder();

            GetSafeUserInput(builder, "grid size", v => { builder.WithSize(v); });
            GetSafeUserInput(builder, "number of components", v => { builder.WithComponentCount(v); });

            for (int i = 1; i <= builder.Count; i++)
            {
                GetSafeUserInputForCoordinate(builder, "component" + i + "'s coordinate as X,Y", c => { builder.AddComponent(new Component(c)); });
            }
            GetSafeUserInputForCoordinate(builder, "rover's coordinate X,Y", c => { builder.WithRover(new Rover(c)); });

            return(builder.Build());
        }
        private void GetSafeUserInputForCoordinate(Grid.GridBuilder builder, string label, Action <Coordinate> setFunc)
        {
            bool valueSet = false;

            Console.WriteLine("Please enter " + label + " : ");
            while (!valueSet)
            {
                try
                {
                    setFunc(GetCoordinateValue());
                    valueSet = true;
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }