Rutas
/
Julia
Julia
/
Ejercicios
/
Nombre de robot
Nombre de robot

Nombre de robot

Media

Instrucciones

Gestiona la configuración de fábrica de un robot.

Cuando un robot sale de la fábrica, no tiene nombre.

La primera vez que enciendes un robot, se genera un nombre aleatorio con el formato de dos letras mayúsculas seguidas de tres dígitos, como RX837 o BC811.

De vez en cuando hay que restablecer un robot a su configuración de fábrica, lo que significa que su nombre se borra. La próxima vez que se lo preguntes, ese robot responderá con un nombre aleatorio nuevo.

Los nombres deben ser aleatorios: no deben seguir una secuencia predecible. Usar nombres aleatorios conlleva un riesgo de colisiones. Tu solución debe garantizar que todos los robots existentes tengan un nombre único.

El conjunto de pruebas solo genera unos 100 nombres de forma predeterminada. Hay unos 700 000 nombres válidos, así que solo te dará una pequeña probabilidad de que se produzcan colisiones. Plantéate comprobar tu solución en busca de colisiones de alguna otra forma, además del conjunto de pruebas.

Este ejercicio continúa nuestra exploración del sistema de tipos de Julia, esta vez con tipos mutables, y nos introduce en la generación de números aleatorios.

Imaginemos que restablecer el robot a los ajustes de fábrica es como una cirugía: introduce cambios en el sujeto, pero no lo sustituye. También podríamos haber modelado el problema de forma que restablecer un robot creara un robot nuevo, pero no todos los problemas pueden modelarse únicamente con estructuras de datos inmutables (¡incluso los lenguajes puramente funcionales lidian con la mutabilidad dentro de sus entornos de ejecución!).

En Julia, las funciones que mutan sus argumentos llevan por convención un sufijo !. Así que nuestro método para hacer esto se llamará reset!.

Esto es solo una convención, pero casi todo el código de Julia publicado la sigue, y puede que llegues a estar de acuerdo en que resulta muy útil.

Pistas

Tendrás que definir un método para generar nombres únicos, una estructura para describir robots, un método para restablecer un robot, y un método para obtener el nombre de un robot.

Puede que te resulte útil diseñar tu programa primero para que simplemente genere un nombre aleatorio para un robot (sin preocuparte por las colisiones) y, después, pensar y diseñar un esquema que evite emitir nombres duplicados. En tu diseño, reflexiona sobre cómo cambia el tiempo de ejecución de la generación de nombres a medida que se agotan los nombres. ¿Qué garantías quieres ofrecer a quien llama?


Fuente

Una sesión de depuración con Paul Blackwell en gSchool.
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Julia Exercism

¿Listo para empezar Nombre de robot?

Regístrate en Exercism para aprender y dominar Julia con 35 conceptos128 ejercicios y mentoría humana real, todo gratis.