Διαδρομές
/
Julia
Julia
/
Ασκήσεις
/
Όνομα ρομπότ
Όνομα ρομπότ

Όνομα ρομπότ

Μέτριο

Οδηγίες

Διαχειρίσου τις ρυθμίσεις του εργοστασίου ρομπότ.

Όταν ένα ρομπότ βγαίνει από τη γραμμή παραγωγής, δεν έχει όνομα.

Την πρώτη φορά που ενεργοποιείς ένα ρομπότ, δημιουργείται ένα τυχαίο όνομα με τη μορφή δύο κεφαλαίων γραμμάτων ακολουθούμενων από τρία ψηφία, όπως RX837 ή BC811.

Πού και πού χρειάζεται να επαναφέρουμε ένα ρομπότ στις εργοστασιακές του ρυθμίσεις, που σημαίνει ότι το όνομά του σβήνεται. Την επόμενη φορά που θα ρωτήσεις, αυτό το ρομπότ θα απαντήσει με ένα νέο τυχαίο όνομα.

Τα ονόματα πρέπει να είναι τυχαία: δεν πρέπει να ακολουθούν μια προβλέψιμη σειρά. Η χρήση τυχαίων ονομάτων σημαίνει κίνδυνο συγκρούσεων. Η λύση σου πρέπει να διασφαλίζει ότι κάθε υπάρχον ρομπότ έχει μοναδικό όνομα.

Η σουίτα δοκιμών παράγει από προεπιλογή μόνο ~100 ονόματα. Υπάρχουν ~700k έγκυρα ονόματα, οπότε θα δίνει μόνο μια μικρή πιθανότητα συγκρούσεων. Σκέψου να ελέγξεις τη λύση σου για συγκρούσεις και με κάποιον άλλο τρόπο, πέρα από τη σουίτα δοκιμών.

Αυτή η άσκηση συνεχίζει την εξερεύνησή μας στο σύστημα τύπων της Julia, αυτή τη φορά με μεταβλητούς τύπους, και μας συστήνει την παραγωγή τυχαίων αριθμών.

Ας φανταστούμε ότι η επαναφορά του ρομπότ στις εργοστασιακές ρυθμίσεις μοιάζει με χειρουργική επέμβαση: κάνει αλλαγές στο υποκείμενο, αλλά δεν το αντικαθιστά. Θα μπορούσαμε επίσης να έχουμε μοντελοποιήσει το πρόβλημα έτσι ώστε η επαναφορά ενός ρομπότ να δημιουργεί ένα νέο ρομπότ, αλλά δεν μπορούν όλα τα προβλήματα να μοντελοποιηθούν αποκλειστικά με αμετάβλητες δομές δεδομένων (ακόμα και οι καθαρά συναρτησιακές γλώσσες έχουν να κάνουν με τη μεταβλητότητα μέσα στο runtime τους!).

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

Αυτό είναι απλώς μια σύμβαση, αλλά σχεδόν όλος ο δημοσιευμένος κώδικας Julia την ακολουθεί και μπορεί να καταλήξεις να συμφωνήσεις ότι είναι πολύ χρήσιμη!

Υποδείξεις

Θα χρειαστεί να ορίσεις μια μέθοδο για την παραγωγή μοναδικών ονομάτων, μια δομή για να περιγράφεις ρομπότ, μια μέθοδο για την επαναφορά ενός ρομπότ, και μια μέθοδο για να παίρνεις το όνομα ενός ρομπότ.

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


Πηγή

Μια συνεδρία debugging με τον Paul Blackwell στο gSchool.
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Julia Exercism

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

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