Track
/
Groovy
Groovy
/
Esercizi
/
Simulatore di robot
Simulatore di robot

Simulatore di robot

Facile

Istruzioni

Scrivi un simulatore di robot.

Il centro di collaudo di una fabbrica di robot ha bisogno di un programma per verificare i movimenti dei robot.

I robot hanno tre movimenti possibili:

  • girare a destra
  • girare a sinistra
  • avanzare

I robot vengono collocati su una griglia infinita ipotetica, rivolti verso una direzione precisa (north, east, south o west), in corrispondenza di un insieme di coordinate {x,y}, ad esempio {3,8}, con le coordinate che aumentano verso north e verso east.

Il robot riceve poi una serie di istruzioni, dopodiché il centro di collaudo verifica la nuova posizione del robot e la direzione verso cui è rivolto.

  • La stringa di lettere «RAALAL» significa:
    • Girare a destra
    • Avanzare di due passi
    • Girare a sinistra
    • Avanzare di un passo
    • Girare ancora a sinistra
  • Diciamo che un robot parta da {7, 3} rivolto verso north. Allora, eseguendo questa sequenza di istruzioni, dovrebbe ritrovarsi in {9, 4} rivolto verso west.

Proprietà e campi in Groovy

In questo esercizio potresti aver notato che lo stub definisce dei getter, come getX(), ma i test accedono al valore direttamente come .x. Questo dipende da come Groovy definisce le proprietà. Analizziamolo nel dettaglio:

  • Un campo è un membro di una classe, di un'interfaccia o di un trait usato per memorizzare dati.
  • Una proprietà è una caratteristica di una classe visibile dall'esterno.

Punti chiave sulle proprietà di Groovy:

  • Groovy genera automaticamente getter e setter per i campi non privati (o solo un getter se il campo è contrassegnato come final).
  • Si può accedere alle proprietà per nome (come nel test di questo esercizio) e verranno chiamati il getter o il setter in modo trasparente.
  • Per convenzione, Groovy riconosce le proprietà anche quando non c'è un campo sottostante, purché ci siano getter o setter.

In questo esercizio abbiamo specificato solo i getter richiesti (e quindi, come sopra, le proprietà) per imporre un'implementazione corretta. Sei libero di decidere quali campi (e i loro tipi) siano più adatti alla soluzione.

Se vuoi approfondire l'argomento dei campi e delle proprietà, fai riferimento al capitolo 3.3. Campi e proprietà nella documentazione di Groovy.


Fonte

Ispirato a una domanda di colloquio presso un'azienda famosa.
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Groovy Exercism

Vuoi iniziare Simulatore di robot?

Iscriviti a Exercism per imparare e padroneggiare Groovy con 66 esercizi e il mentoring di persone reali, tutto gratis.