Data una stringa, restituisce la "fortuna" di quella stringa.
La fortuna di una stringa, come ho completamente inventato ai fini di questa sfida, è un numero intero, determinato come segue:
- La fortuna di base per una stringa è 1.
- Per ogni lettera consecutiva che condivide con la parola "fortunato" (senza distinzione tra maiuscole e minuscole), moltiplica la fortuna per 2. Ad esempio, se la stringa fosse " lu mberjack" o "sma ck ", moltiplicheresti per 4. (Più specificamente, 2 ^ numero di caratteri consecutivi condivisi.)
- Le lettere condivise devono essere nello stesso ordine consecutivo in "fortunato" ma possono iniziare ovunque nella parola per lo stesso valore ("luc" ha lo stesso moltiplicatore 8 * di "cky").
- Se la parola ha più occorrenze in cui condivide caratteri consecutivi con lucky, usa la stringa consecutiva più lunga dei caratteri.
- Per QUALUNQUE lettera condivisa con la parola "presagio" sottrarre 2 dalla fortuna.
- Può abbinare un personaggio ogni volta, in qualsiasi ordine. Ad esempio la stringa "nnnnnomemenn" perde 24 fortuna (12 lettere corrispondenti)
Esempio:
luck("lucky")
>>32
2 ^ 5 (5 lettere consecutive) = 32
luck("firetruck")
>>6
2 ^ 3 - 2 (3 lettere consecutive da uck , e condivise con presagio)
luck("memes")
>>-7
1 - 8 (importo di base, 4 condivisi con "presagio")
Questo è il codice golf, quindi vince la risposta con il minor numero di byte.
Puoi inserire e produrre come preferisci: scrivi una funzione, usa l'input standard, ecc.
Per le funzioni, supponiamo che qualunque tipo di dati abbia senso per quella lingua. (Ad esempio, in JavaScript, verrai passato a String
e restituito a Number
)
Modifica: puoi presumere che qualsiasi input sia in minuscolo.
int8_t str_luck(const char* str);
o dovrebbe essere uint64_t str_luck(const char* str);
?