Dada uma string, retorne a "sorte" da string.
A sorte de uma string, como acabei de compensar para o objetivo desse desafio, é um número inteiro, assim determinado:
- A sorte base de uma string é 1.
- Para cada letra consecutiva compartilhada com a palavra "sorte" (sem distinção entre maiúsculas e minúsculas), multiplique a sorte por 2. Por exemplo, se sua sequência for " lu mberjack" ou "sma ck ", você multiplicará por 4. (Mais especificamente, 2 ^ número de caracteres consecutivos compartilhados.)
- As letras compartilhadas devem estar na mesma ordem consecutiva que aparecem em "sortudo", mas podem começar em qualquer lugar da palavra pelo mesmo valor ("luc" tem o mesmo multiplicador de 8 * que "cky").
- Se a palavra tiver várias ocorrências em que compartilha caracteres consecutivos com sorte, use a sequência consecutiva mais longa dos caracteres.
- Para qualquer letra, ele compartilha com a palavra "presságio" subtrai 2 da sorte.
- Pode corresponder a um personagem qualquer quantidade de vezes, em qualquer ordem. Por exemplo, a cadeia "nnnnnomemenn" perde 24 sorte (12 letras correspondentes)
Exemplo:
luck("lucky")
>>32
2 ^ 5 (5 letras consecutivas) = 32
luck("firetruck")
>>6
2 ^ 3 - 2 (3 letras consecutivas de uck , e compartilhadas com presságio)
luck("memes")
>>-7
1 - 8 (valor base, 4 compartilhados com "presságio")
Isso é código de golfe, então a resposta com o menor número de bytes vence.
Você pode inserir e enviar da maneira que desejar - escrever uma função, usar entrada padrão etc.
Para funções, assuma o tipo de dados que faria sentido para esse idioma. (Por exemplo, em JavaScript, você receberia um String
e retornaria a Number
)
Editar: você pode assumir que qualquer entrada é minúscula.
int8_t str_luck(const char* str);
ou deveria ser uint64_t str_luck(const char* str);
?