Dungeon Master - одна из первых ролевых игр в реальном времени, впервые выпущенная в 1987 году на Atari ST. Среди других захватывающих вещей того времени, он предложил довольно сложную систему заклинаний, основанную на рунах.
Ваша задача сегодня состоит в том, чтобы написать программу или функцию, которая оценивает количество очков маны, необходимое для наложения данного заклинания в Dungeon Master.
Система заклинаний - это верхний правый голубой прямоугольник на картинке выше.
Заклинания, руны и мана
Заклинания Мастера подземелий состоят из 2-4 рун, выбранных из следующих категорий, в точном порядке:
- Мощность (обязательно)
- Стихийное влияние (обязательно)
- Форма (необязательно)
- Класс / Выравнивание (необязательно)
Это означает, что действительными заклинаниями являются:
- Сила + Стихийное влияние
- Сила + Стихийное Влияние + Форма
- Сила + Стихийное Влияние + Форма + Класс / Выравнивание
Каждая категория содержит 6 рун, и каждая руна имеет связанную базовую стоимость маны:
=============================================================================
| Power | Rune | Lo | Um | On | Ee | Pal | Mon |
| +-----------+------+------+------+------+------+------+
| | Base cost | 1 | 2 | 3 | 4 | 5 | 6 |
=============================================================================
| Elemental Influence | Rune | Ya | Vi | Oh | Ful | Des | Zo |
| +-----------+------+------+------+------+------+------+
| | Base cost | 2 | 3 | 4 | 5 | 6 | 7 |
=============================================================================
| Form | Rune | Ven | Ew | Kath | Ir | Bro | Gor |
| +-----------+------+------+------+------+------+------+
| | Base cost | 4 | 5 | 6 | 7 | 7 | 9 |
=============================================================================
| Class / Alignment | Rune | Ku | Ros | Dain | Neta | Ra | Sar |
| +-----------+------+------+------+------+------+------+
| | Base cost | 2 | 2 | 3 | 4 | 6 | 7 |
=============================================================================
Оценка стоимости маны
Мана-стоимость заклинания равна сумме мана-стоимости всех рун:
Стоимость Силовой руны всегда равна ее базовой стоимости (от 1 до 6).
Для других рун применяется следующая формула:
где сила - базовая стоимость руны силы.
Примеры
Spell: Lo Ful
Cost : 1 + floor((1 + 1) * 5 / 2) = 1 + 5 = 6
Spell: Um Ful
Cost : 2 + floor((2 + 1) * 5 / 2) = 2 + 7 = 9
Spell: Pal Vi Bro
Cost : 5 + floor((5 + 1) * 3 / 2) + floor((5 + 1) * 7 / 2) = 5 + 9 + 21 = 35
Разъяснения и правила
- Ваш ввод будет состоять из 2-4 строк, обозначающих руны заклинания. Вы можете взять их в любом приемлемом формате, например, 4 различных параметра, массив строк (например
['Lo', 'Ful']
) или только одну строку с разделителем из одного символа на ваш выбор (например'Lo Ful'
). Пожалуйста, укажите выбранный формат ввода в вашем ответе. - Руны гарантированно действительны.
- Порядок категорий должен соблюдаться. Неиспользуемые категории могут отсутствовать или заменяться каким-либо ложным значением.
- Вы можете принять руны в любом из следующих форматов: 1. Заглавная буква, за которой следует нижний регистр (
'Ful'
) 2. Все строчные буквы ('ful'
) 3. Все прописные буквы ('FUL'
). Но вы не можете смешивать разные форматы. - Совершенно очевидно, что нам не важно знать, действительно ли заклинание имеет какой-то эффект в игре (любопытные, полезные заклинания перечислены здесь ).
- Это код-гольф , поэтому выигрывает самый короткий код в байтах.
- И помните: лорд Хаос наблюдает за вами!
Контрольные примеры
Spell | Output
---------------+-------
Lo Ful | 6
Um Ful | 9
On Ya | 7
Lo Zo Ven | 12
Pal Vi Bro | 35
Ee Ya Bro Ros | 31
On Ful Bro Ku | 31
Lo Zo Kath Ra | 20
On Oh Ew Sar | 35
Ee Oh Gor Dain | 43
Mon Zo Ir Neta | 68
Mon Des Ir Sar | 75