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

Simulador de robô

Fácil

Instruções

Escreva um simulador de robô.

A instalação 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 posicionados em uma grade infinita hipotética, virados para uma direção específica (norte, leste, sul ou oeste), em um conjunto de coordenadas {x,y}, por exemplo, {3,8}, com as coordenadas aumentando para o norte e para o leste.

Em seguida, o robô recebe uma série de instruções, e então a instalação de testes verifica a nova posição do robô e para qual direção ele está apontando.

  • A string de letras "RAALAL" significa:
    • Virar à direita
    • Avançar duas vezes
    • Virar à esquerda
    • Avançar uma vez
    • Virar à esquerda mais uma vez
  • Digamos que um robô comece em {7, 3} virado para o norte. Então, executar essa sequência de instruções deve deixá-lo em {9, 4} virado para o oeste.

Propriedades e campos em Groovy

Neste exercício, você deve ter notado que o stub define getters, como getX(), mas os testes acessam o valor diretamente como .x. Isso se deve à forma como o Groovy define propriedades. Vamos por partes:

  • Um campo é um membro de uma classe, interface ou trait usado para armazenar dados.
  • Uma propriedade é um recurso visível externamente de uma classe.

Pontos-chave sobre as propriedades do Groovy:

  • O Groovy gera getters e setters automaticamente para campos não privados (ou apenas um getter, se o campo estiver marcado como final).
  • As propriedades podem ser acessadas pelo nome (como no teste deste exercício) e vão chamar o getter ou o setter de forma transparente.
  • Por convenção, o Groovy reconhece propriedades mesmo quando não existe um campo de apoio, desde que haja getters ou setters.

Neste exercício, especificamos apenas os getters necessários (e, portanto, as propriedades conforme descrito acima) para exigir uma implementação adequada. Você tem liberdade para decidir quais campos (e seus tipos) são mais adequados para a sua solução.

Se você quiser explorar mais o tema de campos e propriedades, consulte o Capítulo 3.3. Campos e propriedades na documentação do Groovy.


Fonte

Inspirado em uma pergunta de entrevista em uma empresa famosa.
Editar via GitHub O link abre em uma nova janela ou aba
Groovy Exercism

Tudo pronto para começar Simulador de robô?

Crie sua conta no Exercism para aprender e dominar Groovy com 66 exercícios e mentoria humana de verdade, tudo de graça.