Trung bình 0 đã giải Tỷ lệ chấp nhận 0%

Robot Command Simulator

Move a robot using L (turn left 90 degrees), R (turn right 90 degrees), and A (advance one step).

Bạn sẽ học được gì

  • Theo dõi vị trí và hướng nhìn
  • Rẽ trái và phải bằng mảng hướng
  • Xử lý chuỗi lệnh từng bước

Đề bài

Move a robot using L (turn left 90 degrees), R (turn right 90 degrees), and A (advance one step). Turning does not move it. Positive x points east and positive y points north. Directions are encoded as 0 = north, 1 = east, 2 = south, 3 = west. There are no obstacles or boundaries.

Implement robot_command_simulator(x, y, direction, commands).

Input

x: Initial horizontal coordinate.

y: Initial vertical coordinate.

direction: Initial direction: 0 north, 1 east, 2 south, 3 west.

commands: Commands to process from left to right.

Output

Return [final_x, final_y, final_direction], using the same direction encoding.

Ràng buộc

−1,000,000,000 ≤ initial x, y ≤ 1,000,000,000. Direction is 0…3. There are 0…100,000 commands, each uppercase L, R, or A.

Ví dụ

Ví dụ 1
Đầu vào:
x = 0
y = 0
commands = "RAALA"
direction = 0

Kết quả mong đợi:
expected = [2, 1, 0]
Đầu vào:
long long x = 0;
long long y = 0;
std::string commands = "RAALA";
long long direction = 0;

Kết quả mong đợi:
std::vector<long long> expected = {2, 1, 0};
Đầu vào:
long x = 0;
long y = 0;
string commands = "RAALA";
long direction = 0;

Kết quả mong đợi:
long[] expected = new long[] {2, 1, 0};

Giải thích

Turn east, advance twice to (2, 0), turn north, then advance to (2, 1). Direction 0 means north.

Ví dụ 2
Đầu vào:
x = 3
y = -2
commands = "LLLL"
direction = 1

Kết quả mong đợi:
expected = [3, -2, 1]
Đầu vào:
long long x = 3;
long long y = -2;
std::string commands = "LLLL";
long long direction = 1;

Kết quả mong đợi:
std::vector<long long> expected = {3, -2, 1};
Đầu vào:
long x = 3;
long y = -2;
string commands = "LLLL";
long direction = 1;

Kết quả mong đợi:
long[] expected = new long[] {3, -2, 1};

Giải thích

Four left turns restore the original east-facing direction (1). Turning never changes the coordinates.

Hướng tiếp cận

Hãy tự thử trước, sau đó mở từng gợi ý một.

Gợi ý 1

Theo dõi vị trí và hướng riêng biệt; lệnh quay chỉ đổi hướng mà không di chuyển robot.

Gợi ý 2

Advance dùng hướng hiện tại để cập nhật một tọa độ thêm một bước.

Gợi ý 3

Nhớ rằng hướng sẽ vòng lại sau khi quay trái từ north hoặc quay phải từ west.

Độ phức tạp mong đợi

thời gian O(n), bộ nhớ phụ O(1)

Tham khảo

Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.