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

Όνομα ρομπότ

Μέτριο

Οδηγίες

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

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

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

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

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

Υλοποίηση

Είναι πιθανό να εξαντληθούν τα ονόματα των ρομπότ: μόλις έχει εκχωρηθεί κάθε δυνατό όνομα ρομπότ, θα πρέπει να επιστρέφεται ένα σφάλμα.

Δοκιμή μπόνους

Μόλις καταφέρεις να περνάει το go test, θα δεις ότι στη σουίτα δοκιμών υπάρχει μια δοκιμή με το όνομα TestCollisions, η οποία παραλείπεται από προεπιλογή, καθώς μπορεί να πάρει πολλή ώρα. Αυτή η δοκιμή δημιουργεί νέα ρομπότ μέχρι να μην μπορεί να εκχωρηθεί άλλο νέο όνομα στο ρομπότ.

Για να τρέξει η δοκιμή, αφαίρεσε αυτή τη γραμμή:

t.Skip("skipping test as it can take a long time to run if solution is sub-optimal.")

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


Πηγή

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

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

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