forked from int28h/JavaTasks
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path0009.java
More file actions
85 lines (78 loc) · 3.15 KB
/
0009.java
File metadata and controls
85 lines (78 loc) · 3.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/**
* На игровом поле находится робот. Позиция робота на поле описывается двумя целочисленным координатами: X и Y.
* Ось X смотрит слева направо, ось Y — снизу вверх. (Помните, как рисовали графики функций в школе?)
* В начальный момент робот находится в некоторой позиции на поле.
* Также известно, куда робот смотрит: вверх, вниз, направо или налево.
* Ваша задача — привести робота в заданную точку игрового поля.
*
* Робот описывается классом Robot. Вы можете пользоваться следующими его методами (реализация вам неизвестна):
*
* public class Robot {
*
* public Direction getDirection() {
* // текущее направление взгляда
* }
*
* public int getX() {
* // текущая координата X
* }
*
* public int getY() {
* // текущая координата Y
* }
*
* public void turnLeft() {
* // повернуться на 90 градусов против часовой стрелки
* }
*
* public void turnRight() {
* // повернуться на 90 градусов по часовой стрелке
* }
*
* public void stepForward() {
* // шаг в направлении взгляда
* // за один шаг робот изменяет одну свою координату на единицу
* }
* }
*
* Direction, направление взгляда робота, — это перечисление:
*
* public enum Direction {
* UP,
* DOWN,
* LEFT,
* RIGHT
* }
*
*
* Как это выглядит:
* https://ucarecdn.com/54490c3b-9a32-4f7b-85c2-efd12455b5c0/
*
* Пример
*
* В метод передано: toX == 3, toY == 0; начальное состояние робота такое: robot.getX() == 0,
* robot.getY() == 0, robot.getDirection() == Direction.UP
*
* Чтобы привести робота в указанную точку (3, 0), метод должен вызвать у робота следующие методы:
*
* robot.turnRight();
* robot.stepForward();
* robot.stepForward();
* robot.stepForward();
*/
public static void moveRobot(Robot robot, int toX, int toY) {
if(robot.getX() > toX){
while(robot.getDirection() != Direction.LEFT) robot.turnLeft();
}
if(robot.getX() < toX){
while(robot.getDirection() != Direction.RIGHT) robot.turnRight();
}
while(robot.getX() != toX) robot.stepForward();
if(robot.getY() > toY){
while(robot.getDirection() != Direction.UP) robot.turnLeft();
}
if(robot.getY() < toY){
while(robot.getDirection() != Direction.DOWN) robot.turnRight();
}
while(robot.getY() != toY) robot.stepForward();
}