文字列を指定すると、その文字列の「運」を返します。
文字列の運は、このチャレンジの目的のために完全に補ったので、次のように決定される整数です。
- 文字列の基本的な運は1です。
- 単語「lucky」(大文字と小文字は区別されません)と共有する連続した文字ごとに、luckに2を掛けます。たとえば、文字列が「lu mberjack」または「sma ck」の場合、4を掛けます。 2 ^連続した文字の共有数。)
- 共有文字は、「ラッキー」に表示されるのと同じ順序である必要がありますが、同じ値の単語のどこからでも開始できます(「luc」は「cky」と同じ8 *乗数です)。
- 単語に複数のオカレンスがあり、ラッキーと連続した文字を共有している場合、文字の最も長い連続した文字列を使用します。
- 任意の文字については、「omen」という単語と共有し、運から2を引きます。
- 文字を任意の順序で任意の回数一致させることができます。たとえば、文字列 "nnnnnomemenn"は24運(12の一致する文字)を失います
例:
luck("lucky")
>>32
2 ^ 5(連続した5文字)= 32
luck("firetruck")
>>6
2 ^ 3-2(前兆と共有されるuck、eからの連続した3文字)
luck("memes")
>>-7
1-8(基本額、4は「前兆」と共有)
これはコードゴルフであるため、バイト数が最も少ない答えが優先されます。
任意の方法で入出力できます-関数の作成、標準入力の使用など。
関数の場合、その言語にとって意味のあるデータ型を想定します。(たとえば、JavaScriptでは、aが渡され、a String
を返しますNumber
)
編集:入力はすべて小文字であると想定できます。
int8_t str_luck(const char* str);
そうあるべきuint64_t str_luck(const char* str);
ですか?