Nesse post está apresentada a solução do problema "Instruções do Robô". É um problema Ad-hoc do Beecrowd
Plataforma: URI (BEECROWD)
Problema: 1574
Enunciado:
Você possui um robô na origem do eixo x. O robô receberá algumas instruções. Sua tarefa é predizer sua posição depois de executar todas as instruções.
- LEFT: move uma unidade para a esquerda (diminui p em 1, onde p é a posição do robô antes de mover)
- RIGHT: move uma unidade para a direita (incrementa p em 1)
- SAME AS i: executa a mesma ação que na i-ésima instrução. É garantido que i é um inteiro positivo não maior que o número de instruções já executadas.
Linguagens: C e C++
Solução:
Aqui as soluções em C e C++ são iguais, diferindo apenas em comandos específicos da linguagem e no uso de string em C++ e char em C.
Mais uma vez, como já costumo fazer, não testei a string inteira, assumindo que as entradas estarão dentro dos padrões esperados. Na vida real, teste a string inteira!
Então verifico se ela começa por S o L. Caso contrário, assumo que será R.
Se for S, lê lixo e num e atualiza comandos[i] com comandos[num-1].
Se for L, decrementa p. Se for R, incrementa p.
Código em C:
#include <stdio.h> int main() { int t, n, num, p, i; char linha[10], comandos[101], lixo[7]; scanf("%d", &t); while (t--) { scanf("%d", &n); p = 0; for (i = 0; i < n; i++) { scanf("%s ", &linha); comandos[i] = linha[0]; if (linha[0] == 'S') { scanf("%s %d", &lixo, &num); comandos[i] = comandos[num-1]; } if (comandos[i] == 'L') p--; else p++; } printf("%d\n", p); } return 0; }
#include <iostream> using namespace std; int main() { int t, n, num, p, i; string linha, comandos[101], lixo; cin >> t; while (t--) { cin >> n; p = 0; for (i = 0; i < n; i++) { cin >> linha; comandos[i] = linha; if (linha[0] == 'S') { cin >> lixo >> num; comandos[i] = comandos[num-1]; } if (comandos[i][0] == 'L') p--; else p++; } cout << p << endl; } return 0; }
Nenhum comentário:
Postar um comentário