Beberapa bulan yang lalu saya memiliki pertanyaan ini sebagai teka-teki pra-pemutaran untuk wawancara. Baru-baru ini ketika berpikir tentang materi blog, itu muncul di kepala saya sebagai contoh yang baik untuk digunakan untuk memecahkan masalah secara fungsional. Saya akan memposting solusi saya untuk ini segera setelah saya selesai menulis posting blog saya.
CATATAN: Pertanyaan ini ditanyakan pada StackOverflow setahun yang lalu , dan diturunkan setelah beberapa (salah) jawaban. Saya menganggap itu telah dibatalkan karena wawancara yang jelas atau pertanyaan pekerjaan rumah. Jawaban kami di sini harus berupa kode golf yang cukup dalam agar seseorang tidak berpikir untuk menggunakannya!
Dalam perlombaan, Anda bertaruh menggunakan strategi berikut. Setiap kali Anda kehilangan taruhan, Anda menggandakan nilai taruhan untuk putaran berikutnya. Setiap kali Anda menang, taruhan untuk putaran berikutnya adalah satu dolar. Anda memulai putaran dengan bertaruh satu dolar.
Misalnya, jika Anda mulai dengan 20 dolar, dan Anda memenangkan taruhan di babak pertama, kalah taruhan di dua putaran berikutnya dan kemudian memenangkan taruhan di babak keempat, Anda akan berakhir dengan 20 + 1-1-2 +4 = 22 dolar.
Anda diharapkan untuk menyelesaikan fungsi g
,, yang mengambil dua argumen:
- Argumen pertama adalah bilangan bulat
a
yang merupakan jumlah uang awal yang kami miliki saat kami memulai taruhan. - Argumen kedua adalah string
r
. Karakter hasil h akan berupa 'W' (menang) atau 'L' (kalah), menunjukkan hasil dari putaran ke-i.
Fungsi Anda harus mengembalikan jumlah uang yang akan Anda miliki setelah semua putaran dimainkan.
Jika pada titik tertentu Anda tidak memiliki cukup uang di akun untuk menutupi nilai taruhan, Anda harus berhenti dan mengembalikan jumlah yang Anda miliki pada saat itu.
Contoh dijalankan
1st round - Loss: 15-1 = 14
2nd round - Loss: 14-2 = 12 (Bet doubles)
3rd round - Loss: 12-4 = 8
4th round - Win: 8 + 8 = 16
5th round - Loss:16-1 = 15 (Since the previous bet was a win, this bet has a value of 1 dollar)
6th round - Loss: 15-2 = 13
7th round - Loss: 13-4 = 9
8th round - Loss: 9-8 = 1
Fungsi kembali 1
dalam hal ini
Pemenang ditentukan oleh jumlah karakter paling sedikit DI DALAM definisi fungsi tersirat. Bekerjasama dengan bahasa jika diinginkan. Saya tahu milik saya dapat ditingkatkan!