private static string PerformSimulation( LawnMowerState initialState, LawnSize lawnSize, LawnMowerCommand[] commands) { var simulator = new LawnMowerMovementSimulator(); try { var lawnMowerSteps = simulator.SimulateMovement( initialState, lawnSize, commands); var finalState = lawnMowerSteps .Last(); return $"{finalState.Position.X} {finalState.Position.Y} {finalState.Direction.Sign}"; } catch (CannotMoveOutsideLawnBoundariesException) { return "Mower tried to cut rare plants"; } }
private LawnMowerState PerformCommand( LawnMowerState state, LawnMowerCommand command) { switch (command) { case LawnMowerCommand.TurnRight: return state.GetStateAfterRightTurn(); case LawnMowerCommand.TurnLeft: return state.GetStateAfterLeftTurn(); case LawnMowerCommand.MoveForward: return state.GetStateAfterMoveForward(); default: throw new UnknownLawnMowerCommandException(); } }
private LawnMowerState PerformCommand( LawnMowerState state, LawnMowerCommand command) { switch (command) { case LawnMowerCommand.TurnRight: return(state.GetStateAfterRightTurn()); case LawnMowerCommand.TurnLeft: return(state.GetStateAfterLeftTurn()); case LawnMowerCommand.MoveForward: return(state.GetStateAfterMoveForward()); default: throw new UnknownLawnMowerCommandException(); } }