Introducción
Esto se basa en un problema real que enfrenté recientemente al hacer un juego de computadora y pensé que sería una buena ronda de golf de código .
Hay siete clases espectrales principales de estrellas que emiten cantidades variables de calor. La geología de los planetas alrededor de una estrella está muy influenciada por la cantidad de calor recibido de la estrella, que es un factor de la clase espectral y la distancia de la estrella. Por lo tanto, Mercurio está prácticamente fundido, Neptuno congelado.
¡La galaxia en mi juego se genera de manera procesal y la selección aleatoria de tipos de planetas para estrellas dadas resultó ser un verdadero 'infierno de afirmación'!
El reto
Su método debe seleccionar un planeta de una lista de tipos de planetas apropiados para la clase de estrella, en función de un umbral de calor mínimo, un umbral de calor máximo y un número aleatorio. Para simplificar, este desafío solo utilizará una estrella de clase G, al igual que nuestro sol.
Entradas
Un número entero heat
en el rango de 4 a 11 que representa la cantidad de calor recibido por el planeta desde la estrella.
Variables
Esta tabla muestra los posibles planetas basados en heat
. Su método primero debe reducir las opciones disponibles basadas en el calor mínimo y el calor máximo, heat
debe caer en o entre los dos. Por ejemplo, con un calor de 10 en las únicas opciones, sería Desierto, Hierro y Lava.
Planet type Heat min Heat max Random Chance
Gas Giant 4 9 15
Ice 4 6 10
Ice Giant 4 6 10
Gaia class 5 7 10
Dense Atmosphere 7 9 10
Desert 7 10 25
Iron 7 10 14
Lava 10 11 6
Luego, la probabilidad de que se elija un planeta (en las opciones restantes) es sus posibilidades aleatorias divididas por la suma de las posibilidades aleatorias de todas las opciones.
En el ejemplo anterior, la probabilidad de que se elija Hierro es 14/(25+14+6)
.
Salida
Devuelve el tipo de planeta como una cadena.
Haz lo mejor que puedas para evitar las puntas de flecha lógicas. El código más corto gana, apunta a la creatividad. ¡Feliz golf!