Percursos
/
Groovy
Groovy
/
Exercícios
/
Simulador de robô
Simulador de robô

Simulador de robô

Fácil

Instruções

Escreve um simulador de robôs.

O centro de testes de uma fábrica de robôs precisa de um programa para verificar os movimentos dos robôs.

Os robôs têm três movimentos possíveis:

  • virar à direita
  • virar à esquerda
  • avançar

Os robôs são colocados numa grelha infinita hipotética, virados para uma direção específica (north, east, south ou west), num conjunto de coordenadas {x,y}, por exemplo, {3,8}, com as coordenadas a aumentar para north e east.

Depois, o robô recebe várias instruções e, nesse momento, o centro de testes verifica a nova posição do robô e a direção para a qual está virado.

  • A string de letras "RAALAL" significa:
    • Vira à direita
    • Avança duas vezes
    • Vira à esquerda
    • Avança uma vez
    • Vira à esquerda mais uma vez
  • Suponhamos que um robô começa em {7, 3} virado para north. Nesse caso, executar esta sequência de instruções deve deixá-lo em {9, 4} virado para west.

Propriedades e campos em Groovy

Neste exercício, deves ter reparado que o stub define getters, como getX(), mas os testes acedem ao valor diretamente como .x. Isto deve-se à forma como o Groovy define as propriedades. Vamos por partes:

  • Um campo é um membro de uma classe, de uma interface ou de um trait usado para armazenar dados.
  • Uma propriedade é uma característica visível do exterior de uma classe.

Pontos-chave sobre as propriedades do Groovy:

  • O Groovy gera automaticamente getters e setters para campos não privados (ou apenas um getter, se o campo estiver marcado como final).
  • As propriedades podem ser acedidas pelo nome (como acontece no teste deste exercício) e chamam o getter ou o setter de forma transparente.
  • Por convenção, o Groovy reconhece as propriedades mesmo que não exista um campo subjacente, desde que existam getters ou setters.

Neste exercício, especificámos apenas os getters necessários (e, por conseguinte, as propriedades, como explicado acima) para garantir uma implementação correta. És livre de decidir que campos (e os respetivos tipos) são mais adequados para a tua solução.

Se quiseres explorar melhor o tema dos campos e das propriedades, consulta o Capítulo 3.3. Fields and Properties na documentação do Groovy.


Fonte

Inspirado numa pergunta de entrevista numa empresa famosa.
Editar via GitHub A ligação abre numa nova janela ou separador
Groovy Exercism

Estás pronto para começar Simulador de robô?

Inscreve-te no Exercism para aprenderes e dominares Groovy com 66 exercícios, e mentoria humana real, tudo grátis.