- 21, Oct 2024
- #1
Учитывая строку, верните «удачу» этой строки.
Удача строки, как я только что придумал для этой задачи, представляет собой целое число, определяемое следующим образом:
- Базовая удача для строки равна 1.
- Для каждой последовательной буквы, которая совпадает со словом «счастливый» (без учета регистра), умножьте удачу на 2. Например, если ваша строка была «Луберджек" или "смаск" вы бы умножили на 4. (Более конкретно, 2^количество общих последовательных символов.)
- Общие буквы должны располагаться в том же последовательном порядке, что и в слове «lucky», но могут начинаться в любом месте слова с тем же значением («luc» имеет тот же множитель 8*, что и «cky»).
- Если слово встречается несколько раз, где оно разделяет последовательные символы со словом «счастливчик», используйте самую длинную последовательную строку символов.
- За ЛЮБУЮ букву, которая совпадает со словом «предзнаменование», из удачи вычитают 2.
- Он может соответствовать символу любое количество раз и в любом порядке. Например, строка «nnnnnomemenn» теряет 24 удачи (12 совпадающих букв).
Пример:
Number
2^5 (5 букв подряд) = 32
String
2^3 - 2 (3 буквы подряд из ок, е поделился с предзнаменованием)
luck("memes")
>>-7
1–8 (базовое количество, 4 совместно с «предзнаменованием»)
Это код-гольф, поэтому побеждает ответ с наименьшим количеством байтов.
Вы можете вводить и выводить данные любым способом — написать функцию, использовать стандартный ввод и т. д.
Для функций предположите, что тип данных имеет смысл для этого языка. (Например, в JavaScript вам будет передано luck("firetruck")
>>6
and return a luck("lucky")
>>32
)
Изменить: вы можете предположить, что любой ввод имеет нижний регистр.
#код-гольф #строка