Однією з причин, яку я завжди любив Покемон, є те, що для такої простої, здавалося б, гри вона має стільки складних шарів. Розглянемо хід прихованої сили. У грі тип і потужність (принаймні до VI покоління) прихованої сили відрізняються для кожного покемона, який ним користується! Це досить круто, правда? Тепер ви здивуєтесь, якби я сказав вам, що тип і потужність прихованої сили не генеруються випадковим чином?
У всіх іграх Pokemon усі Pokemon (не тільки ті, хто є у вашій партії, ВСІ ПОКЕМОН) мають шість внутрішньо збережених цілих чисел (одне для статі HP, одне для стати атаки, одне для статусу оборони, одне для спеціального статусу атаки, один для спеціальної статистики захисту та один для статистики швидкості) називав їх індивідуальні значення, або IV. Ці значення коливаються в межах від 0 до 31, і вони по суті є одним з небагатьох факторів, що впливають на загальну статистику Pokemon. ЗАРАЗ, вони також визначають тип і потужність прихованої сили!
У поколінні III до V (покоління, алгоритм якого ми будемо реалізовувати) тип прихованої потужності визначається за такою формулою (зверніть увагу на дужки підлоги, це означає, що потрібно округлювати результат):
де a, b, c, d, e і f - найменш значущі біти HP, Attack, Defense, Speed, Sp. Attack, і Sp. Оборона ІV відповідно. (Найменше значущий біт - IV мод 2.) Кількість, отриману тут, потім можна перетворити на фактичний тип за допомогою цього діаграми:
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
Для потужності використовується аналогічна формула:
Однак тут u, v, w, x, y і z є другим найменш значущим бітом HP, Attack, Defense, Speed, Sp. Attack і Sp. Оборона IV (у тому порядку знову). (Другий найменш значущий біт складніший, ніж найменш значущий біт. Якщо IV мод 4 дорівнює 2 або 3, то біт дорівнює 1, інакше він дорівнює 0. Якщо у вашій мові є якийсь вбудований або, принаймні, більш розумний спосіб для цього вам, ймовірно, слід скористатися.)
Отже, як ви, напевно, вже зрозуміли, завдання полягає в тому, щоб написати програму, яка займає шість цілих чисел, розділених пробілами через STDIN, які представляють HP, Attack, Defense, Speed, Sp. Attack і Sp. Захист IV Покемона (у тому порядку) та виведення типу та потужності прихованої сили Покемона.
Зразок введення:
30 31 31 31 30 31
Вибірка зразка:
Grass 70
Зразок введення:
16 18 25 13 30 22
Вибірка зразка:
Poison 61
Це код-гольф, тому найкоротший код виграє. Удачі!
(І перш ніж люди запитують, я тут використав алгоритм Покоління V, тому що Покоління VI позбавляється від рандомізації потужності і робить його завжди 60. Я не тільки вважаю, що це неймовірно кульгаво, я думаю, що це робить виклик НЕ МОЛЬШОМУ цікавим. Отже для цілей виклику ми проводимо гру V Gen.)