Geben Sie bei einer gegebenen Zeichenfolge das "Glück" dieser Zeichenfolge zurück.
Das Glück einer Saite ist eine ganze Zahl, die sich wie folgt zusammensetzt:
- Das Grundglück für eine Saite ist 1.
- Für jeden aufeinanderfolgenden Buchstaben es Aktien mit dem Wort „Glück“ (Groß- und Kleinschreibung), multiplizieren Sie das Glück von 2. Zum Beispiel, wenn die Zeichenfolge ist „ lu mberjack“ oder „sma ck “ Du würdest multiplizieren 4. (Genauer gesagt, 2 ^ Anzahl aufeinanderfolgender Zeichen.)
- Die geteilten Buchstaben müssen in der gleichen Reihenfolge sein, in der sie als "Glück" angezeigt werden, können jedoch an einer beliebigen Stelle im Wort mit demselben Wert beginnen ("luc" hat den gleichen 8 * -Multiplikator wie "cky").
- Wenn das Wort mehrfach vorkommt und aufeinanderfolgende Zeichen mit glücklichen teilt, verwenden Sie die längste aufeinanderfolgende Zeichenfolge.
- Für JEDEN Brief, den es mit dem Wort "Omen" teilt, subtrahiere 2 vom Glück.
- Es kann beliebig oft in beliebiger Reihenfolge mit einem Zeichen übereinstimmen. Zum Beispiel verliert die Zeichenfolge "nnnnnomemenn" 24 Glück (12 übereinstimmende Buchstaben)
Beispiel:
luck("lucky")
>>32
2 ^ 5 (5 aufeinanderfolgende Buchstaben) = 32
luck("firetruck")
>>6
2 ^ 3 - 2 (3 aufeinanderfolgende Briefe von uck , e geteilt mit omen)
luck("memes")
>>-7
1 - 8 (Grundbetrag, 4 geteilt mit "Omen")
Dies ist Codegolf, daher gewinnt die Antwort mit den wenigsten Bytes.
Sie können nach Belieben eingeben und ausgeben - schreiben Sie eine Funktion, verwenden Sie die Standardeingabe usw.
Nehmen Sie für Funktionen an, welcher Datentyp für diese Sprache Sinn macht. (In JavaScript wird beispielsweise a übergeben String
und a zurückgegeben. Number
)
Bearbeiten: Sie können davon ausgehen, dass die Eingabe in Kleinbuchstaben erfolgt.
int8_t str_luck(const char* str);
oder sollte es sein uint64_t str_luck(const char* str);
?