Jednym z powodów, dla których zawsze uwielbiałem Pokemona, jest to, że w tak pozornie prostej grze ma tyle warstw złożoności. Rozważmy ruch Ukryta Moc. W grze rodzaj i moc (przynajmniej przed generacją VI) ukrytej mocy jest inna dla każdego pokemona, który z niej korzysta! To całkiem fajne, prawda? Czy byłbyś zaskoczony, gdybym ci powiedział, że rodzaj i moc Ukrytej Mocy nie są generowane losowo?
We wszystkich grach Pokemon wszystkie Pokemony (nie tylko w twojej drużynie, WSZYSTKIE POKEMON) mają sześć wewnętrznie zapisanych liczb całkowitych (jedna dla statystyki HP, jedna dla statystyki ataku, jedna dla statystyki obrony, jedna dla specjalnej statystyki ataku, jeden dla specjalnej statystyki obrony, a drugi dla statystyki prędkości) nazywał ich indywidualne wartości lub IV. Wartości te mieszczą się w zakresie od 0 do 31 i zasadniczo są jednym z kilku czynników, które wpływają na ogólne statystyki pokemona. JEDNAK określają także rodzaj i moc Ukrytej Mocy!
W generacjach od III do V (generacje, których algorytm będziemy wdrażać) rodzaj ukrytej mocy jest określany według następującego wzoru (zwróć uwagę na nawiasy podłogowe, co oznacza, że musisz zaokrąglić wynik):
gdzie a, b, c, d, e i f są najmniej znaczącymi bitami HP, Ataku, Obrony, Prędkości, Sp. Attack i Sp. Obrona IV odpowiednio. (Najmniej znaczącym bitem jest IV mod 2.) Wytworzona tutaj liczba może zostać przekonwertowana na rzeczywisty typ za pomocą tej tabeli:
0 Fighting
1 Flying
2 Poison
3 Ground
4 Rock
5 Bug
6 Ghost
7 Steel
8 Fire
9 Water
10 Grass
11 Electric
12 Psychic
13 Ice
14 Dragon
15 Dark
Do zasilania stosuje się podobną formułę:
Tutaj jednak u, v, w, x, y i z reprezentują drugą najmniej znaczącą część HP, Ataku, Obrony, Prędkości, Sp. Attack and Sp. Obrona IV (znowu w tej kolejności). (Drugi najmniej znaczący bit jest bardziej skomplikowany niż najmniej znaczący bit. Jeśli IV mod 4 to 2 lub 3, to bit ma wartość 1, w przeciwnym razie jest równy 0. Jeśli twój język ma wbudowany lub co najmniej bardziej sprytny sposób aby to zrobić, prawdopodobnie powinieneś go użyć).
Tak więc, jak zapewne już się zorientowałeś, wyzwaniem jest napisanie programu, który poprzez STDIN przyjmuje sześć liczb całkowitych oddzielonych spacjami, które reprezentują HP, Atak, Obrona, Szybkość, Sp. Attack and Sp. Obroń IV pokemona (w tej kolejności) i generuj typ i moc Ukrytej Mocy tego Pokemona.
Przykładowe dane wejściowe:
30 31 31 31 30 31
Przykładowe dane wyjściowe:
Grass 70
Przykładowe dane wejściowe:
16 18 25 13 30 22
Przykładowe dane wyjściowe:
Poison 61
To jest golf golfowy, więc wygrywa najkrótszy kod. Powodzenia!
(I zanim ludzie zapytają, użyłem tutaj algorytmu Generacji V, ponieważ Generacja VI pozbywa się losowości mocy i sprawia, że zawsze ma 60 lat. Nie tylko uważam, że jest to bardzo kiepskie, ale sprawia, że wyzwanie jest MNIEJSZE ZAINTERESOWANE. Więc na potrzeby tego wyzwania prowadzimy grę Gen V.)
Odpowiedzi:
Pyth, 110 bajtów
Zawiera znaki niedrukowalne. Oto zrzut heksowy:
Możesz także pobrać plik pokemon.pyth i uruchomić go za pomocą
python3 pyth.py pokemon.pyth
Dane wejściowe
30, 31, 31, 31, 30, 31
zostaną wydrukowaneWyjaśnienie:
źródło
Ruby, 210
Pierwszy raz w golfa, więc myślę, że jest to dość oczywiste rozwiązanie.
źródło
CJam,
140115 bajtówPamiętaj, że kod zawiera znaki niedrukowalne.
Wypróbuj online w interpretatorze CJam: Chrome | Firefox
źródło
JavaScript (ES6), 251 bajtów
Trochę długo, przynajmniej na razie. Lista typów i złożone matematyki zajmują mniej więcej tyle samo miejsca. Szukam sposobów na skrócenie jednego lub obu z nich.
Jak zwykle sugestie mile widziane!
źródło
JavaScript (ES6), 203 bajty
Przykładowe przebiegi:
źródło