Koszty zasobów sieci energetycznej
Wprowadzenie
W grze planszowej Power Grid integralną częścią gry jest kupowanie zasobów do zasilania elektrowni. Istnieją cztery rodzaje zasobów używanych w grze (pięć, jeśli uwzględnisz energię odnawialną, ale oczywiście nie możesz do tego kupić surowców). Są to węgiel, ropa, śmieci i uran. Rynek zasobów wygląda następująco:
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
Kiedy zasoby są kupowane, są pobierane z lewej strony rynku, gdzie są najtańsze. Gdy nowe zasoby są dodawane do rynku, są dodawane od prawej strony. Jak widać, powoduje to równowagę podaży i popytu - jeśli kupuje się więcej zasobów danego rodzaju niż jest uzupełnianych w każdej rundzie, cena tego surowca wzrośnie. Podobnie, jeśli jest mniejszy, koszt się zmniejszy.
Węgiel, ropa i śmieci zwiększają koszty w tym samym tempie, podczas gdy uran skaluje się znacznie szybciej. Jedna jednostka kosztu zasobów innych niż uran 8 - floor((<units available> - 1) / 3). Jedna jednostka uranu kosztuje, 13 - <units available>jeśli dostępnych jest 5 lub więcej jednostek, i 18 - (2 * <units available>)inaczej.
Na przykład na początku gry do kupienia są wszystkie 24 jednostki Węgla. Jeśli pierwszy gracz chciałby kupić 4 jednostki Węgla, pierwsze trzy jednostki kosztują 1, a czwarty kosztuje 2, co daje całkowity koszt 5. To pozostawia 20 jednostek. Jeśli drugi gracz chciałby również kupić 4 jednostki Węgla, koszt wyniósłby (2 * 2 + 2 * 3) = 10.
Wyzwanie
Twoim wyzwaniem jest napisanie programu lub funkcji, która oblicza koszt zakupu określonej ilości określonego zasobu, przy założeniu, że na rynku jest określona ilość tego zasobu.
Zgłoszenie powinno akceptować, w dowolnym rozsądnym formacie wejściowym i dowolnej kolejności, następujące parametry:
- Typ zasobu - z pewnością jeden z [C, O, G, U].
- Ilość tego zasobu obecnego na rynku - z pewnością nieujemną liczbą całkowitą. Jeśli typ zasobu nie jest U, nie będzie większy niż 24. Jeśli typ zasobu to U, nie będzie większy niż 12.
- Ilość tego zasobu, którą gracz chciałby kupić - z pewnością nieujemną liczbą całkowitą, która jest mniejsza lub równa ilości już obecnej na rynku.
Wynik powinien być kosztem wymaganych zasobów.
Dodatkowe zasady
- Podane formuły służą wyłącznie celom ilustracyjnym i zachęcamy do skorzystania z dowolnej metody obliczania żądanych kosztów.
- Kody literowe dla różnych typów zasobów (C, O, G, U) można zastąpić ich małymi literami. Możesz także zastąpić litery cyframi, w formie
C=0, O=1, G=2, U=3lubC=1, O=2, G=3, U=4. - To jest golf golfowy , więc zwycięzcą będzie najmniejsze przesłanie w bajtach.
- Jeśli przesłanie wymaga wprowadzenia danych w innej kolejności lub formacie niż podano w poprzedniej sekcji, należy podać szczegółowe informacje.
Przypadki testowe
Format przypadku testowego:
resource type, amount in market, amount to buy
> result
Przypadki testowe:
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) = 22i f(O, 10, 7) = 44.

f("O",1,5)?