Пример #1
0
        public IPositionFinal GetFinalPostion(int gridId, IPositionStarting positionStarting)
        {
            IGridCoordinate gridCoordinate = _dataService.GetGridCoordinateByGridId(gridId);
            IPositionFinal  positionFinal  = new PositionFinal
            {
                FinalXPosition   = positionStarting.StartingXPosition,
                FinalYPosition   = positionStarting.StartingYPosition,
                FinalOrientation = positionStarting.Orientation,
                Lost             = false
            };

            char[] array = positionStarting.Instructions.ToCharArray();
            foreach (char instruction in array)
            {
                if (positionFinal.Lost)
                {
                    _dataService.SaveOffPosition(gridId, positionFinal);
                    break;
                }
                switch (instruction)
                {
                case 'L':
                    LeftInstructionProcess(positionFinal);
                    break;

                case 'R':
                    RightInstructionProcess(positionFinal);
                    break;

                case 'F':
                    if (!_dataService.IsOffPosition(gridId, positionFinal))
                    {
                        ForwardInstructionProcess(positionFinal, gridCoordinate);
                    }
                    break;

                default:
                    break;
                }
            }
            return(positionFinal);
        }
Пример #2
0
 public async Task <IPositionFinal> GetFinalPostionAsync(int gridId, IPositionStarting positionStarting)
 {
     return(await Task.FromResult(GetFinalPostion(gridId, positionStarting)));
 }