Parcours
/
Groovy
Groovy
/
Exercices
/
Simulateur de robot
Simulateur de robot

Simulateur de robot

Facile

Instructions

Écris un simulateur de robot.

Le centre de tests d'une usine de robots a besoin d'un programme pour vérifier les déplacements des robots.

Les robots disposent de trois déplacements possibles :

  • tourner à droite
  • tourner à gauche
  • avancer

Les robots sont placés sur une grille infinie hypothétique, orientés dans une direction particulière (north, east, south ou west) à un ensemble de coordonnées {x,y}, par exemple {3,8}, les coordonnées augmentant vers le nord et vers l'est.

Le robot reçoit alors une série d'instructions, après quoi le centre de tests vérifie sa nouvelle position et la direction dans laquelle il pointe.

  • La chaîne de lettres « RAALAL » signifie :
    • Tourner à droite
    • Avancer deux fois
    • Tourner à gauche
    • Avancer une fois
    • Tourner à gauche encore une fois
  • Imaginons qu'un robot démarre à la position {7, 3}, orienté vers le nord. L'exécution de cette suite d'instructions doit alors le laisser à la position {9, 4}, orienté vers l'ouest.

Propriétés et champs en Groovy

Dans cet exercice, tu as peut-être remarqué que le stub définit des getters, comme getX(), alors que les tests accèdent directement à la valeur avec .x. Cela vient de la façon dont Groovy définit les propriétés. Décomposons cela :

  • Un champ est un membre d'une classe, d'une interface ou d'un trait, utilisé pour stocker des données.
  • Une propriété est une caractéristique d'une classe visible de l'extérieur.

Points clés sur les propriétés Groovy :

  • Groovy génère automatiquement des getters et des setters pour les champs non privés (ou seulement un getter si le champ est marqué comme final).
  • On peut accéder aux propriétés par leur nom (comme dans le test de cet exercice), ce qui appelle le getter ou le setter de façon transparente.
  • Par convention, Groovy reconnaît les propriétés même s'il n'existe aucun champ sous-jacent, tant qu'il y a des getters ou des setters.

Dans cet exercice, on n'a spécifié que les getters nécessaires (et donc les propriétés correspondantes, comme expliqué ci-dessus) afin d'imposer une implémentation correcte. Tu es libre de choisir les champs (et leurs types) qui conviennent le mieux à ta solution.

Si tu veux approfondir le sujet des champs et des propriétés, consulte le chapitre 3.3. Fields and Properties dans la documentation Groovy.


Source

Inspiré par une question d'entretien dans une entreprise célèbre.
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Groovy Exercism

Prêt à commencer Simulateur de robot ?

Inscris-toi sur Exercism pour apprendre et maîtriser Groovy avec 66 exercices, et un vrai mentorat humain, le tout gratuitement.