Diberikan string, kembalikan "keberuntungan" string itu.
Keberuntungan string, karena saya baru saja mengarang untuk tujuan tantangan ini, adalah bilangan bulat, ditentukan sebagai berikut:
- Keberuntungan dasar untuk string adalah 1.
- Untuk setiap huruf berturut-turut yang dibagikan dengan kata "keberuntungan" (tidak peka huruf besar-kecil), gandakan keberuntungan dengan 2. Misalnya, jika string Anda adalah " lu mberjack" atau "sma ck " Anda akan mengalikan dengan 4. (Lebih khusus, 2 ^ jumlah karakter berurutan yang dibagikan.)
- Huruf yang dibagikan harus dalam urutan yang sama secara berurutan seperti "beruntung" tetapi dapat dimulai di mana saja di kata untuk nilai yang sama ("luc" memiliki pengali 8 * yang sama dengan "cky").
- Jika kata tersebut memiliki banyak kejadian di mana ia berbagi karakter berturut-turut dengan lucky, gunakan string karakter berturut-turut terpanjang.
- Untuk huruf APA PUN yang dibagikan dengan kata "pertanda" kurangi 2 dari keberuntungan.
- Itu bisa cocok dengan karakter berapa kali, dalam urutan apa pun. Misalnya string "nnnnnomemenn" kehilangan 24 keberuntungan (12 huruf yang cocok)
Contoh:
luck("lucky")
>>32
2 ^ 5 (5 huruf berurutan) = 32
luck("firetruck")
>>6
2 ^ 3 - 2 (3 surat berturut-turut dari uck , e dibagikan dengan pertanda)
luck("memes")
>>-7
1 - 8 (jumlah dasar, 4 dibagikan dengan "pertanda")
Ini adalah kode golf, jadi jawabannya dengan byte paling sedikit menang.
Anda dapat input dan output dengan cara apa pun yang Anda inginkan - menulis fungsi, menggunakan input standar, dll.
Untuk fungsi, anggap tipe data apa pun yang masuk akal untuk bahasa itu. (Misalnya, dalam JavaScript, Anda akan lulus String
dan mengembalikan a Number
)
Sunting: Anda dapat menganggap setiap input huruf kecil.
int8_t str_luck(const char* str);
atau seharusnya uint64_t str_luck(const char* str);
?