Διαδρομές
/
Groovy
Groovy
/
Ασκήσεις
/
Προσομοιωτής ρομπότ
Προσομοιωτής ρομπότ

Προσομοιωτής ρομπότ

Εύκολο

Οδηγίες

Γράψε έναν προσομοιωτή ρομπότ.

Οι εγκαταστάσεις δοκιμών ενός εργοστασίου ρομπότ χρειάζονται ένα πρόγραμμα για να επαληθεύουν τις κινήσεις των ρομπότ.

Τα ρομπότ έχουν τρεις δυνατές κινήσεις:

  • στρίψε δεξιά
  • στρίψε αριστερά
  • προχώρησε

Τα ρομπότ τοποθετούνται σε ένα υποθετικό άπειρο πλέγμα, κοιτώντας προς μια συγκεκριμένη κατεύθυνση (βόρεια, ανατολικά, νότια ή δυτικά) και βρίσκονται σε ένα σύνολο συντεταγμένων {x,y}, π.χ. {3,8}, με τις συντεταγμένες να αυξάνονται προς τα βόρεια και τα ανατολικά.

Στη συνέχεια το ρομπότ λαμβάνει έναν αριθμό εντολών, και τότε οι εγκαταστάσεις δοκιμών επαληθεύουν τη νέα θέση του ρομπότ και προς τα πού δείχνει.

  • Η συμβολοσειρά γραμμάτων "RAALAL" σημαίνει:
    • Στρίψε δεξιά
    • Προχώρησε δύο φορές
    • Στρίψε αριστερά
    • Προχώρησε μία φορά
    • Στρίψε αριστερά για άλλη μια φορά
  • Ας πούμε ότι ένα ρομπότ ξεκινά από το {7, 3} κοιτώντας βόρεια. Τότε, εκτελώντας αυτή τη σειρά εντολών θα πρέπει να καταλήξει στο {9, 4} κοιτώντας δυτικά.

Ιδιότητες και πεδία στην Groovy

Σε αυτή την άσκηση, μπορεί να παρατήρησες ότι το stub ορίζει getters, όπως getX(), αλλά τα tests έχουν πρόσβαση στην τιμή απευθείας ως .x. Αυτό οφείλεται στο πώς η Groovy ορίζει τις ιδιότητες. Ας το αναλύσουμε:

  • Ένα πεδίο είναι μέλος μιας κλάσης, μιας διεπαφής ή ενός trait που χρησιμοποιείται για αποθήκευση δεδομένων.
  • Μια ιδιότητα είναι ένα εξωτερικά ορατό χαρακτηριστικό μιας κλάσης.

Βασικά σημεία για τις ιδιότητες της Groovy:

  • Η Groovy δημιουργεί αυτόματα getters και setters για μη ιδιωτικά πεδία (ή μόνο έναν getter αν το πεδίο έχει επισημανθεί ως final).
  • Οι ιδιότητες μπορούν να προσπελαστούν με το όνομά τους (όπως στο test αυτής της άσκησης) και θα καλέσουν τον getter ή τον setter με διαφάνεια.
  • Κατά σύμβαση, η Groovy θα αναγνωρίσει ιδιότητες ακόμα κι αν δεν υπάρχει πεδίο υποστήριξης, αρκεί να υπάρχουν getters ή setters.

Σε αυτή την άσκηση, έχουμε καθορίσει μόνο τους απαιτούμενους getters (και επομένως τις ιδιότητες όπως παραπάνω) για να επιβάλουμε τη σωστή υλοποίηση. Μπορείς να αποφασίσεις ελεύθερα ποια πεδία (και οι τύποι τους) είναι τα πιο κατάλληλα για τη λύση σου.

Αν θέλεις να εξερευνήσεις περαιτέρω το θέμα των πεδίων και των ιδιοτήτων, ανατρέξε στο Κεφάλαιο 3.3. Πεδία και Ιδιότητες στην τεκμηρίωση της Groovy.


Πηγή

Εμπνευσμένο από μια ερώτηση συνέντευξης σε μια διάσημη εταιρεία.
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Groovy Exercism

Έτοιμος να ξεκινήσεις την άσκηση Προσομοιωτής ρομπότ;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Groovy με 66 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.