Administra 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 lo consultes, ese robot responderá con un nuevo nombre aleatorio.
Los nombres deben ser aleatorios: no deben seguir una secuencia predecible. Usar nombres aleatorios implica un riesgo de colisiones. Tu solución debe asegurar que cada robot existente tenga un nombre único.
El conjunto de pruebas solo genera ~100 nombres de forma predeterminada. Hay ~700k nombres válidos, así que solo dará una pequeña probabilidad de colisiones. Considera probar 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 presenta la generación de números aleatorios.
Imaginemos que restablecer el robot a la configuración de fábrica es como una cirugía: le hace cambios al sujeto, pero no lo reemplaza. También podríamos haber modelado el problema de forma que restablecer un robot cree un robot nuevo, pero no todos los problemas se pueden modelar solo con estructuras de datos inmutables (¡incluso los lenguajes puramente funcionales lidean con la mutabilidad dentro de sus entornos de ejecución!).
En Julia, las funciones que mutan sus argumentos llevan el sufijo ! por convención.
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 es bastante útil.
Vas a tener 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 primero tu programa para que solo emita un nombre aleatorio para un robot (sin preocuparte por las colisiones) y, más adelante, pensar y diseñar un esquema que evite emitir nombres duplicados. En tu diseño, piensa con cuidado en 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 ofrecerle a quien llama?
Regístrate en Exercism para aprender y dominar Julia con 35 conceptos128 ejercicios y mentoría humana real, todo gratis.