Kurzusok
/
Groovy
Groovy
/
Feladatok
/
Robotszimulátor
Robotszimulátor

Robotszimulátor

Könnyű

Utasítások

Írj egy robotszimulátort.

Egy robotgyár tesztlétesítményének egy programra van szüksége, amely ellenőrzi a robotok mozgását.

A robotok háromféleképpen mozoghatnak:

  • jobbra fordul
  • balra fordul
  • előrelép

A robotokat egy képzeletbeli, végtelen rácsra helyezik, adott irányba (észak, kelet, dél vagy nyugat) nézve, egy {x,y} koordinátapáron, például {3,8}; a koordináták észak és kelet felé nőnek.

A robot ezután egy sor utasítást kap, ekkor a tesztlétesítmény ellenőrzi a robot új pozícióját, és azt, hogy milyen irányba néz.

  • A „RAALAL” betűsorozat a következőt jelenti:
    • Jobbra fordul
    • Kétszer előrelép
    • Balra fordul
    • Egyszer előrelép
    • Ismét balra fordul
  • Tegyük fel, hogy egy robot a {7, 3} pontról indul, észak felé nézve. Ha lefuttatjuk ezt az utasítássorozatot, akkor a {9, 4} ponton kell végeznie, nyugat felé nézve.

Tulajdonságok és mezők a Groovyban

Ebben a feladatban talán észrevetted, hogy a váz definiál gettereket, például getX(), a tesztek viszont közvetlenül, .x formában érik el az értéket. Ez annak köszönhető, ahogyan a Groovy a tulajdonságokat definiálja. Nézzük meg közelebbről:

  • A mező egy osztály, interfész vagy trait olyan tagja, amely adatokat tárol.
  • A tulajdonság egy osztály kívülről látható jellemzője.

Fontos tudnivalók a Groovy tulajdonságairól:

  • A Groovy automatikusan gettereket és settereket generál a nem privát mezőkhöz (vagy csak gettert, ha a mező final jelöléssel szerepel).
  • A tulajdonságokat a nevükön keresztül is elérheted (ahogy ebben a feladatban a teszt is teszi), és ilyenkor a háttérben a getter vagy a setter hívódik meg.
  • A konvenció szerint a Groovy akkor is felismeri a tulajdonságokat, ha nincs mögöttük háttérmező, feltéve, hogy vannak getterek vagy setterek.

Ebben a feladatban csak a szükséges gettereket adtuk meg (és ezzel a fentiek szerint a tulajdonságokat is), hogy kikényszerítsük a helyes implementációt. Azt viszont szabadon eldöntheted, mely mezők (és milyen típusok) illenek legjobban a megoldásodhoz.

Ha szeretnél mélyebben elmerülni a mezők és tulajdonságok témájában, lapozd fel a Groovy dokumentációjának 3.3. fejezetét: Mezők és tulajdonságok.


Forrás

Egy híres cég interjúkérdése ihlette.
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Groovy Exercism

Készen állsz elkezdeni a(z) Robotszimulátor feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Groovy nyelvet 66 feladat segítségével, valódi emberi mentorálással, mindez ingyen.