В Skyrim персонаж игрока может использовать мощные магические крики (Ту'умс) для достижения своих целей. Каждый крик состоит из трех слов, однако игрок может использовать первые одно или два слова для достижения того же эффекта с меньшей мощностью, но с более коротким временем восстановления.
Получив строчную ASCII Thu'um фразу без знаков препинания и пробелов , верните, сколько слов силы в ней содержится.
Пример:
fusrodah -> 3
dur -> 1
kaandrem -> 2
odah -> 2
vengaarnos -> 3
Входными данными всегда будет строчная строка ASCII, сформированная путем взятия одного из приведенных ниже криков, выбора первых 1, 2 или 3 слов из этого крика и объединения слов по порядку.
dur neh viir
faas ru maar
feim zii gron
fo krah diin
fus ro dah
gaan lah haas
gol hah dov
hun kaal zoor
iiz slen nus
joor zah frul
kaan drem ov
krii lun aus
laas yah nir
lok vah koor
mid vur shaan
mul qah diiv
od ah viing
raan mir tah
rii vaaz zol
strun bah qo
su grah dun
tiid klo ul
ven gaar nos
wuld nah kest
yol toor shul
zul mey gut
zun haal viik
Итак fus
, fusro
и fusrodah
все они являются допустимыми входными данными, но fusroviir
не потому, что он использует слова из смешанных криков, и rodah
не потому, что это не префикс крика. Вам также не нужно обрабатывать ввод пустой строки.
Самый короткий код в байтах побеждает.
Ответы:
Сетчатка,
78421514 байтПопробуйте онлайн
tiidkloul - единственное слово, которое не имеет такое же количество последовательностей гласных, как число, которое должно быть напечатано. Поэтому нам нужно сопоставить слово, чтобы придать ему дополнительную последовательность гласных.
ou
будет соответствовать только tiidkl ou l, и тогда мы можем заменить ou на oxo, что создаст дополнительную последовательность.Мой первоначальный подход не был таким простым, но он строился на удалении всех согласных, затем на удалении нескольких последовательностей гласных (
ai|ii|aa|...
) и, наконец, на подсчете количества букв. Но спасибо @Martin Büttner за размышления[aeiou]+
.источник
Сетчатка , 313 байт
Попробуйте онлайн!
Основываясь на нескольких простых наблюдениях:
Это означает, что мы можем просто посчитать, сколько слов появятся в строке без наложения. Это именно то, что делает регулярное выражение. Я попытался сжать регулярное выражение немного больше, чем просто объединить все слова с
|
(что будет 351 байт), но я уверен, что это далеко от оптимального. Для начала, я определенно не использовал все общие части оптимально. Но что более важно, можно сжимать строку еще дальше, заставляя ее соответствовать большему количеству строк, чем допустимым словам, если они не могут случайно соответствовать части действительного слова (потому что тогда они просто никогда не будут сопоставлены). Я уверен, что нужно было бы автоматизировать сжатие, чтобы быть уверенным, что оно оптимально.источник
Perl 5, 28 байт
Количество байтов включает в себя один для
-p
.Украдены прямо из dev-null . (Спасибо, dev-null!)
источник