Track
/
Julia
Julia
/
Esercizi
/
Nome del robot
Nome del robot

Nome del robot

Medio

Istruzioni

Gestisci le impostazioni di fabbrica dei robot.

Quando un robot esce dalla catena di montaggio, non ha un nome.

La prima volta che accendi un robot, viene generato un nome casuale nel formato di due lettere maiuscole seguite da tre cifre, come RX837 o BC811.

Ogni tanto dobbiamo ripristinare un robot alle impostazioni di fabbrica, il che significa che il suo nome viene cancellato. La prossima volta che lo chiedi, quel robot risponderà con un nuovo nome casuale.

I nomi devono essere casuali: non devono seguire una sequenza prevedibile. Usare nomi casuali comporta un rischio di collisioni. La soluzione deve garantire che ogni robot esistente abbia un nome univoco.

Per impostazione predefinita, la suite di test genera solo circa 100 nomi. I nomi validi sono circa 700.000, quindi c'è solo una piccola probabilità che si verifichino collisioni. Oltre alla suite di test, valuta di verificare la soluzione alla ricerca di collisioni anche in qualche altro modo.

In questo esercizio continueremo a esplorare il sistema dei tipi di Julia, questa volta con i tipi mutabili, e faremo la conoscenza con la generazione di numeri casuali.

Immaginiamo che ripristinare il robot alle impostazioni di fabbrica sia come un intervento chirurgico: apporta modifiche al soggetto, ma non lo sostituisce. Avremmo anche potuto modellare il problema in modo che ripristinare un robot creasse un nuovo robot, ma non tutti i problemi si possono modellare unicamente con strutture dati immutabili (anche i linguaggi puramente funzionali hanno a che fare con la mutabilità all'interno dei loro runtime!).

In Julia, per convenzione, le funzioni che mutano i loro argomenti hanno il suffisso !. Quindi il nostro metodo per farlo si chiamerà reset!.

È solo una convenzione, ma quasi tutto il codice Julia pubblicato la segue, e potresti arrivare a convenire che è davvero utile!

Suggerimenti

Dovrai definire un metodo per generare nomi univoci, una struttura per descrivere i robot, un metodo per ripristinare un robot ed un metodo per ottenere il nome di un robot.

Potresti trovare utile progettare prima il programma in modo che emetta semplicemente un nome casuale per un robot (senza preoccuparti delle collisioni) e, solo in seguito, pensare e progettare uno schema che eviti di emettere nomi duplicati. Nel tuo progetto, rifletti su come cambia il tempo di esecuzione della generazione dei nomi man mano che i nomi si esauriscono. Quali garanzie vuoi offrire a chi chiama la funzione?


Fonte

Una sessione di debug con Paul Blackwell a gSchool.
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Julia Exercism

Vuoi iniziare Nome del robot?

Iscriviti a Exercism per imparare e padroneggiare Julia con 35 concetti128 esercizi e il mentoring di persone reali, tutto gratis.