Costos de recursos de la red eléctrica
Introducción
En el juego de mesa Power Grid , una parte integral del juego es el acto de comprar recursos para alimentar tus estaciones de energía. Hay cuatro tipos de recursos utilizados en el juego (cinco, si incluye energía renovable, pero obviamente no puede comprar recursos para eso). Estos son carbón, aceite, basura y uranio. El mercado de recursos se ve así:
1---- | 2---- | 3---- | 4---- | 5---- | 6---- | 7---- | 8---- | 10 | 12
CCC | CCC | CCC | CCC | CCC | CCC | CCC | CCC | U | U
OOO U | OOO U | OOO U | OOO U | OOO U | OOO U | OOO U | OOO U | 14 | 16
GGG | GGG | GGG | GGG | GGG | GGG | GGG | GGG | U | U
Cuando se compran recursos, se toman de la izquierda del mercado, donde son más baratos. Cuando se agregan nuevos recursos al mercado, se agregan desde la derecha. Como puede verse, esto produce un equilibrio entre la oferta y la demanda: si se compran más recursos de un tipo particular de los que se reponen en cada ronda, el precio de ese recurso aumentará. Del mismo modo, si es menor, el costo se reducirá.
El carbón, el petróleo y la basura aumentan su costo a la misma velocidad, mientras que el uranio aumenta mucho más rápido. Una sola unidad de un recurso que no sea de uranio cuesta 8 - floor((<units available> - 1) / 3). Una sola unidad de uranio cuesta 13 - <units available>si hay 5 o más unidades disponibles, y de lo 18 - (2 * <units available>)contrario.
Por ejemplo, al comienzo del juego hay 24 unidades de carbón disponibles para comprar. Si el primer jugador quisiera comprar 4 unidades de Carbón, las primeras tres unidades costarían 1 cada una, y la cuarta costaría 2, lo que hace que el costo total sea 5. Esto deja 20 unidades disponibles. Si el segundo jugador también quisiera comprar 4 unidades de Carbón, el costo sería (2 * 2 + 2 * 3) = 10.
El reto
Su desafío es escribir un programa o función que calcule el costo de comprar una cantidad determinada de un recurso en particular, suponiendo que haya una cantidad determinada de ese recurso presente en el mercado.
Su envío debe aceptar, en cualquier formato de entrada razonable y en cualquier orden, los siguientes parámetros:
- El tipo de recurso: garantizado como uno de [C, O, G, U].
- La cantidad de ese recurso que está presente en el mercado, garantizada como un número entero no negativo. Si el tipo de recurso no es U, no será mayor que 24. Si el tipo de recurso es U, no será mayor que 12.
- La cantidad de ese recurso que un jugador le gustaría comprar, garantizado como un número entero no negativo que es menor o igual a la cantidad ya presente en el mercado.
El resultado debe ser el costo de los recursos solicitados.
Reglas Adicionales
- Las fórmulas proporcionadas son solo para fines ilustrativos, no dude en utilizar cualquier método para calcular los costos que desee.
- Los códigos de letras para los diferentes tipos de recursos (C, O, G, U) pueden reemplazarse por sus equivalentes en minúsculas. También puede reemplazar las letras por números, ya sea en el formulario
C=0, O=1, G=2, U=3oC=1, O=2, G=3, U=4. - Este es el código de golf , por lo que el envío más pequeño en bytes será el ganador.
- Si su envío requiere la entrada en un orden o formato diferente al especificado en la sección anterior, debe proporcionar detalles.
Casos de prueba
Formato de caso de prueba:
resource type, amount in market, amount to buy
> result
Casos de prueba:
C, 24, 4
> 5
C, 20, 4
> 10
O, 3, 3
> 24
U, 1, 1
> 16
C, 1, 1
> 8
G, 0, 0
> 0
O, 10, 7
> 44
U, 12, 4
> 10
G, 11, 4
> 22
f(G, 11, 4) = 22y f(O, 10, 7) = 44.

f("O",1,5)?