Черепаха может вращаться со скоростью 1° в секунду. Скорость движения черепахи равна единице расстояния («1 пиксель») в секунду. Черепаха не может двигаться и вращаться одновременно. При этом, чтобы по-прежнему видеть дорогу, черепаха движется только вперед (т. е. не поворачивается). Пусть C — точка с координатами [x,y]. За какое кратчайшее время в секундах первая черепаха достигнет точки С? Помните, что черепаха может вращаться как по часовой стрелке, так и против нее.
Добавьте метод timeToArrival в класс TurtlesWorld. Метод timeToArrival принимает 2 параметра x, y — координаты точки C и возвращает наименьшее время в секундах, за которое любая из черепах сможет добраться до точки C.
Проблема в том, что когда я вставляю его, чтобы проверить в оценщике курса, значения различаются.
На данный момент я определил свой метод для:
- перебирать массив черепах
- получить их расстояния и углы к точке
- Если угол больше 180 (углы берутся другим методом, который принимает только угол по часовой стрелке)
затем измените угол на угол = 360 - угол; - Поскольку вращение и движение составляют 1 секунду за раз, это 1: 1, поэтому мы добавляем необходимые обороты и расстояние к затраченному времени.
- Мы сравниваем время, чтобы определить, какое время является самым коротким.
- Возвращаем лучшее время
li>
Это будет шаг 3 или 4? Учитывая, что это десятичные числа в расстоянии и градусах
public double timeToArrival(double x, double y) {
double angTo;
double time = 0;
double bestTime = Double.MAX_VALUE;
for (int i = 0; i < this.turtles.length; i++) {
this.turtles.setDirection(0);
this.turtles.penDown();
angTo = this.turtles.directionTowards(x, y);
distTo = this.turtles.distanceTo(x, y);
// angle integer is arbitrary because I had the turtles move to see whether they
// reach the point (they do)
int angle = 1;
if (angTo > 180) {
angTo = 360 - angTo;
angle = -1;
}
time += angTo + distTo;
if (time < bestTime) {
bestTime = time;
}
time = 0;
}
return bestTime;
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... missing-so