Tracks
/
Groovy
Groovy
/
Übungen
/
Robotersimulator
Robotersimulator

Robotersimulator

Einfach

Anleitung

Schreibe einen Robotersimulator.

Die Testanlage einer Roboterfabrik braucht ein Programm, um die Bewegungen der Roboter zu überprüfen.

Die Roboter haben drei mögliche Bewegungen:

  • Nach rechts drehen
  • Nach links drehen
  • Vorrücken

Roboter werden auf einem hypothetischen, unendlichen Raster platziert und blicken in eine bestimmte Richtung (north, east, south oder west). Sie stehen auf bestimmten {x,y}-Koordinaten, zum Beispiel {3,8}, wobei die Koordinaten nach Norden und Osten hin zunehmen.

Danach erhält der Roboter eine Reihe von Anweisungen. Daraufhin überprüft die Testanlage die neue Position des Roboters und seine Blickrichtung.

  • Die Zeichenkette „RAALAL“ bedeutet:
    • Nach rechts drehen
    • Zweimal vorrücken
    • Nach links drehen
    • Einmal vorrücken
    • Und noch einmal nach links drehen
  • Angenommen, ein Roboter startet bei {7, 3} mit Blickrichtung north. Führt man diese Anweisungsfolge aus, sollte er anschließend bei {9, 4} mit Blickrichtung west stehen.

Eigenschaften und Felder in Groovy

In dieser Übung ist dir vielleicht aufgefallen, dass das Stub Getter wie getX() definiert, die Tests aber direkt über .x auf den Wert zugreifen. Das liegt daran, wie Groovy Eigenschaften definiert. Schauen wir es uns genauer an:

  • Ein Feld ist ein Mitglied einer Klasse, eines Interfaces oder eines Traits, das Daten speichert.
  • Eine Eigenschaft ist ein von außen sichtbares Merkmal einer Klasse.

Die wichtigsten Punkte zu Eigenschaften in Groovy:

  • Groovy erzeugt automatisch Getter und Setter für nicht-private Felder (oder nur einen Getter, wenn das Feld als final markiert ist).
  • Eigenschaften können über ihren Namen angesprochen werden (wie im Test dieser Übung) und rufen dabei transparent den Getter oder Setter auf.
  • Konventionell erkennt Groovy Eigenschaften auch ohne zugrunde liegendes Feld, sofern Getter oder Setter vorhanden sind.

In dieser Übung haben wir nur die erforderlichen Getter (und damit, wie oben beschrieben, Eigenschaften) angegeben, um eine korrekte Implementierung zu erzwingen. Du kannst selbst entscheiden, welche Felder (und welche Typen) für deine Lösung am besten geeignet sind.

Wenn du dich tiefer mit Feldern und Eigenschaften beschäftigen möchtest, schau in Kapitel 3.3. Felder und Eigenschaften in der Groovy-Dokumentation nach.


Quelle

Inspiriert von einer Interviewfrage bei einer bekannten Firma.
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Groovy Exercism

Bereit, mit Robotersimulator zu starten?

Melde dich bei Exercism an, um Groovy mit 66 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.