给定一个字符串,返回该字符串的“运气”。
正如我为完成此挑战而完全弥补的那样,字符串的运气是一个整数,其确定如下:
- 字符串的基本运气是1。
- 对于每个与“ lucky”(不区分大小写)单词共享的连续字母,将运气乘以2。例如,如果您的字符串是“ lu mberjack”或“ sma ck ”,则应乘以4。(更具体地说, 2 ^共享的连续字符数。)
- 共享字母必须以出现在“ lucky”中的相同连续顺序排列,但可以在单词中的任何位置以相同的值开头(“ luc”的倍数与“ cky”的倍数相同)为8。
- 如果单词多次出现并幸运地共享连续字符,请使用最长的连续字符串。
- 对于任何字母,它与单词“ omen”共享,则从运气中减去2。
- 它可以以任意顺序,任意次数匹配一个字符。例如,字符串“ nnnnnomemenn”失去了24个运气(12个匹配的字母)
例:
luck("lucky")
>>32
2 ^ 5(连续5个字母)= 32
luck("firetruck")
>>6
2 ^ 3-2(来自uck的 3个连续字母,与omen共享e)
luck("memes")
>>-7
1-8(基本金额,与“预兆”共享4个)
这是代码高尔夫球,因此字节最少的答案会获胜。
您可以使用任何方式输入和输出-编写函数,使用标准输入等。
对于函数,假定对该语言有意义的任何数据类型。(例如,在JavaScript中,将传递a String
并返回Number
)
编辑:您可以假设任何输入都是小写。
int8_t str_luck(const char* str);
还是应该uint64_t str_luck(const char* str);
?