Problema
Ver original (inglês)Mova um robô usando L (gira 90 graus à esquerda), R (gira 90 graus à direita) e A (avança um passo). Girar não move o robô. O eixo x positivo aponta para leste e o eixo y positivo aponta para norte. As direções são codificadas como 0 = norte, 1 = leste, 2 = sul, 3 = oeste. Não há obstáculos ou limites.
Implemente robot_command_simulator(x, y, direction, commands).
Entrada
x: Coordenada horizontal inicial.
y: Coordenada vertical inicial.
direction: Direção inicial: 0 norte, 1 leste, 2 sul, 3 oeste.
commands: Comandos a serem processados da esquerda para a direita.
Saída
Retorne [final_x, final_y, final_direction], usando a mesma codificação de direção.
Restrições
−1.000.000.000 ≤ x, y iniciais ≤ 1.000.000.000. Direção é 0…3. Há 0…100.000 comandos, cada um sendo L, R ou A maiúsculo.
Exemplos
Entrada:
x = 0
y = 0
commands = "RAALA"
direction = 0
Saída esperada:
expected = [2, 1, 0]
Entrada:
long long x = 0;
long long y = 0;
std::string commands = "RAALA";
long long direction = 0;
Saída esperada:
std::vector<long long> expected = {2, 1, 0};
Entrada:
long x = 0;
long y = 0;
string commands = "RAALA";
long direction = 0;
Saída esperada:
long[] expected = new long[] {2, 1, 0};
Explicação
Vira para leste, avança duas vezes até (2, 0), vira para norte e então avança até (2, 1). Direção 0 significa norte.
Entrada:
x = 3
y = -2
commands = "LLLL"
direction = 1
Saída esperada:
expected = [3, -2, 1]
Entrada:
long long x = 3;
long long y = -2;
std::string commands = "LLLL";
long long direction = 1;
Saída esperada:
std::vector<long long> expected = {3, -2, 1};
Entrada:
long x = 3;
long y = -2;
string commands = "LLLL";
long direction = 1;
Saída esperada:
long[] expected = new long[] {3, -2, 1};
Explicação
Quatro giros à esquerda restauram a direção original (1), voltando a apontar para leste. Girar nunca altera as coordenadas.
Referências
Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.