문자열이 주어지면 해당 문자열의 "행운"을 반환하십시오.
내가이 도전의 목적을 위해 완전히 보완 한 것처럼 문자열의 행운은 정수이며 다음과 같이 결정됩니다.
- 문자열의 기본 운은 1입니다.
- 연속되는 각 문자에 대해 "lucky"(대소 문자 구분)이라는 단어를 공유하면 행운에 2를 곱합니다. 예를 들어 문자열에 " lu mberjack"또는 "sma ck "인 경우 4를 곱합니다 (더 구체적으로, 2 ^ 연속 문자 수 공유)
- 공유 문자는 "행운"으로 표시되는 순서와 동일해야하지만 단어의 어느 곳에서나 같은 값으로 시작할 수 있습니다 ( "luc"는 "cky"와 동일한 8 * 승수를 가짐).
- 단어에 행운이있는 연속 문자를 공유하는 여러 항목이있는 경우 연속 된 가장 긴 문자열을 사용하십시오.
- 모든 문자의 경우 행운에서 2를 뺀 "omen"이라는 단어와 공유됩니다.
- 순서에 상관없이 문자를 여러 번 일치시킬 수 있습니다. 예를 들어 문자열 "nnnnnomemenn"은 24 운을 잃습니다 (12 개의 일치하는 문자)
예:
luck("lucky")
>>32
2 ^ 5 (5 연속 문자) = 32
luck("firetruck")
>>6
2 ^ 3-2 (uck 에서 3 개의 연속 된 문자 , 전자 가 징조와 공유)
luck("memes")
>>-7
1-8 (기본 금액, 4 "omen"과 공유)
이것은 코드 골프이므로 가장 적은 바이트를 가진 답이 이깁니다.
함수를 작성하고 표준 입력을 사용하는 등 원하는 방식으로 입력 및 출력 할 수 있습니다.
함수의 경우 해당 언어에 적합한 데이터 유형을 가정하십시오. (예를 들어, JavaScript에서는 a가 전달되고 a String
가 반환 됨 Number
)
편집 : 모든 입력이 소문자라고 가정 할 수 있습니다.
int8_t str_luck(const char* str);
아니면해야 uint64_t str_luck(const char* str);
?