Как оптимизировать метод moveRobot

Возвращаюсь к предыдущей задаче, рассмотренной здесь Помогите, пожалуйста, найти ошибку в коде

Мне очень понравилось решение по сокращению кода moveRobot, но оно не учитывает условие, при котором направлений взгляда робота не 4 (UP, DOWN, LEFT, RIGHT), а например 20... Подскажите, пожалуйста, как в данном случае реализовать метод moveRobot. Заранее спасибо!

public static void moveRobot(Robot robot, int toX, int toY) { 
  System.out.println("Начальная позиция " + robot.getX() + " " + robot.getY() + ". Направление взгляда: " + robot.getDirection());

  if (robot.getY() != toY) {
    while (robot.getDirection() != ((robot.getY() < toY)? Direction.UP :  Direction.DOWN)) {
      robot.turnLeft();
    }
    while (robot.getY() != toY) {
      robot.stepForward();
    }
  }
  if (robot.getX() != toX) {
    while (robot.getDirection() != ((robot.getX() < toX)? Direction.RIGHT :  Direction.LEFT)) {
      robot.turnLeft();
    }
    while (robot.getX() != toX) {
      robot.stepForward();
    }
  }

  System.out.println("Ending позиция " + robot.getX() + " " + robot.getY() + ". Направление взгляда: " + robot.getDirection());
}

Ответы (0 шт):