Exemple #1
0
        public void RotateRoverBaseValidation(MarsRoverRequestModel model)
        {
            if (model == null)
            {
                throw new Exception("İstek boş bırakılamaz.");
            }

            if (model.Coordinates.XCoordinate == 0 || model.Coordinates.YCoordinate == 0)
            {
                throw new Exception("Roverların gidebileceği maksimum x ve y koordinat bilgilerini girmeniz gerekmektedir.");
            }

            if (model.Coordinates.XCoordinate < 0 || model.Coordinates.YCoordinate < 0)
            {
                throw new Exception("Maksimum sınır verileri 0'dan büyük olmalıdır.");
            }
            foreach (var item in model.RoverPositionAndCoordinates)
            {
                if (item.Coordinates.XCoordinate > model.Coordinates.XCoordinate || item.Coordinates.YCoordinate > model.Coordinates.YCoordinate)
                {
                    throw new Exception(item.Coordinates.XCoordinate + item.Coordinates.YCoordinate
                                        + item.Direction + " koordinatları maksimum boyutları aştığından dolayı rover bilgileri olarak girilemez.");
                }
            }
        }
Exemple #2
0
        private List <RoverModel> GetRoverList(MarsRoverRequestModel model)
        {
            var roverList = new List <RoverModel>();

            foreach (var roverItem in model.Rovers)
            {
                var plateau = _plateauService.DrawPlateau(model.Plateau);

                var rover = _roverService.SetRoverOnPlateau(model.Plateau, new DeploymentPointModel(roverItem.DeploymentPoint.Direction.ToString())
                {
                    X = roverItem.DeploymentPoint.X,
                    Y = roverItem.DeploymentPoint.Y
                });

                var movements = roverItem.Movement.ToString()
                                .ToCharArray()
                                .Select(x => Enum.Parse <MovementAbility>(x.ToString()))
                                .ToList();

                rover.Movement.MovementList = movements;
                roverList.Add(_roverService.CalculateRoverMovement(rover, plateau));
            }

            return(roverList);
        }
Exemple #3
0
 public List <MarsRoverResponseModel> Post([FromBody] MarsRoverRequestModel model)
 {
     return(GetRoverList(model).Select(x => new MarsRoverResponseModel()
     {
         X = x.DeploymentPoint.X,
         Y = x.DeploymentPoint.Y,
         Direction = x.DeploymentPoint.Direction.ToString()
     }).ToList());
 }
 public List <MarsRoverPositionAndCoordinatesResponseModel> RotateRover(MarsRoverRequestModel model)
 {
     try
     {
         RotateRoverBaseValidation(model);
         var result = _marsRoverService.RotateRovers(model);
         return(result);
     }
     catch (Exception e)
     {
         Console.WriteLine(e);
         throw;
     }
 }
        public List <MarsRoverPositionAndCoordinatesResponseModel> RotateRovers(MarsRoverRequestModel model)
        {
            var rovers = new List <MarsRoverPositionAndCoordinatesResponseModel>();

            foreach (var item in model.RoverPositionAndCoordinates)
            {
                char[] instructionArray = item.Instruction.ToString().ToCharArray();
                foreach (var instruction in instructionArray)
                {
                    if (instruction.ToString() == "L" || instruction.ToString() == "R")
                    {
                        item.Direction = GetDirection(new DirectionModel {
                            Direction = item.Direction, MoveChar = instruction
                        });
                    }
                    if (instruction.ToString() == "M")
                    {
                        item.Coordinates = SetPosition(new MoveModel {
                            Position = item.Coordinates, Direction = item.Direction
                        });
                    }
                }

                if (item.Coordinates.XCoordinate < 0 || item.Coordinates.XCoordinate > model.Coordinates.XCoordinate || item.Coordinates.YCoordinate < 0 || item.Coordinates.YCoordinate > model.Coordinates.YCoordinate)
                {
                    throw new Exception("Verilen komutlar maksimum sınırları aşmıştır");
                }

                var rover = new MarsRoverPositionAndCoordinatesResponseModel {
                    Direction = item.Direction, Coordinates = item.Coordinates
                };
                rovers.Add(rover);
            }

            return(rovers);
        }
Exemple #6
0
        public IActionResult Post([FromBody] MarsRoverRequestModel model)
        {
            var response = _marsRoverBusiness.RotateRover(model);

            return(Ok(response));
        }