Coûts des ressources du réseau électrique
introduction
Dans le jeu de société Power Grid , une partie intégrante du jeu consiste à acheter des ressources pour alimenter vos centrales électriques. Il existe quatre types de ressources utilisées dans le jeu (cinq, si vous incluez des énergies renouvelables, mais vous ne pouvez évidemment pas acheter de ressources pour cela). Ce sont le charbon, le pétrole, les déchets et l'uranium. Le marché des ressources ressemble à ceci:
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
Lorsque les ressources sont achetées, elles sont prises à gauche du marché, où elles sont les moins chères. Lorsque de nouvelles ressources sont ajoutées au marché, elles sont ajoutées par la droite. Comme on peut le voir, cela produit un équilibre entre l'offre et la demande - si plus de ressources d'un type particulier sont achetées que réapprovisionnées à chaque tour, le prix de cette ressource augmentera. De même, si c'est moins, le coût diminuera.
Le charbon, le pétrole et les déchets augmentent tous au même rythme, tandis que l'uranium évolue beaucoup plus rapidement. Une seule unité d'une ressource non uranifère coûte 8 - floor((<units available> - 1) / 3). Une seule unité d'Uranium coûte 13 - <units available>s'il y a 5 unités ou plus disponibles, et 18 - (2 * <units available>)autrement.
Par exemple, au début du jeu, les 24 unités de charbon sont disponibles à l'achat. Si le premier joueur souhaite acheter 4 unités de charbon, les trois premières unités coûteront 1 chacune, et la 4ème en coûtera 2, ce qui rend le coût total 5. Cela laisse 20 unités disponibles. Si le deuxième joueur souhaite également acheter 4 unités de charbon, le coût serait (2 * 2 + 2 * 3) = 10.
Le défi
Votre défi consiste à écrire un programme ou une fonction qui calcule le coût d'achat d'une quantité donnée d'une ressource particulière, en supposant qu'une quantité donnée de cette ressource soit présente sur le marché.
Votre soumission doit accepter, dans n'importe quel format d'entrée raisonnable et dans n'importe quel ordre, les paramètres suivants:
- Type de ressource - garanti comme étant l'un des [C, O, G, U].
- La quantité de cette ressource qui est présente sur le marché - garantie d'être un entier non négatif. Si le type de ressource n'est pas U, il ne sera pas supérieur à 24. Si le type de ressource est U, il ne sera pas supérieur à 12.
- Le montant de cette ressource qu'un joueur voudrait acheter - garanti d'être un entier non négatif qui est inférieur ou égal au montant déjà présent sur le marché.
Le résultat devrait être le coût des ressources demandées.
Règles supplémentaires
- Les formules données sont à titre indicatif seulement, n'hésitez pas à utiliser n'importe quelle méthode de calcul des coûts que vous aimez.
- Les codes alphabétiques des différents types de ressources (C, O, G, U) peuvent être remplacés par leurs équivalents minuscules. Vous pouvez également remplacer les lettres pour les chiffres, sous la forme
C=0, O=1, G=2, U=3ouC=1, O=2, G=3, U=4. - Il s'agit de code-golf , donc la plus petite soumission en octets sera gagnante.
- Si votre soumission nécessite la saisie dans un ordre ou un format différent de celui spécifié dans la section précédente, vous devez fournir des détails.
Cas de test
Format du scénario de test:
resource type, amount in market, amount to buy
> result
Cas de test:
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) = 22et f(O, 10, 7) = 44.

f("O",1,5)?