数ヶ月前、私はインタビューのための事前スクリーニングのパズルとしてこの質問をしました。最近、ブログの素材について考えると、問題を機能的に解決するための良い例として頭に浮かびました。ブログ投稿を書き終えたらすぐに、これに対する解決策を投稿します。
注:この質問は1年前にStackOverflowで尋ねられたもので、いくつかの(誤った)回答の後に採択されました。明らかなインタビューや宿題の質問であると断定されたと思います。ここでの答えは、誰かがそれらを使用することを考えないように、十分に深くコード化されるべきです!
レースでは、次の戦略を使用して賭けます。ベットを失うたびに、次のラウンドのベットの値を2倍にします。勝つたびに、次のラウンドの賭け金は1ドルになります。1ドルを賭けてラウンドを開始します。
たとえば、20ドルで開始し、最初のラウンドで賭けに勝ち、次の2つのラウンドで賭けを失い、4番目のラウンドで賭けに勝った場合、20 + 1-1-2になります。 +4 = 22ドル。
次のg
2つの引数を取る関数を完了することが期待されています。
- 最初の引数は整数
a
で、これは賭けを開始するときに持っている最初のお金です。 - 2番目の引数は文字列
r
です。結果のi番目の文字は、i番目のラウンドの結果を示す 'W'(勝ち)または 'L'(負け)のいずれかになります。
あなたの関数は、すべてのラウンドがプレイされた後に持っているお金の量を返す必要があります。
ある時点で、ベットの価値をカバーするのに十分なお金がアカウントにない場合、その時点で持っている合計額を停止して返さなければなりません。
サンプル実行
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
1
この場合、関数は戻ります
勝者は、暗黙の関数定義内の最小文字数によって決定されます。必要に応じて言語で協力してください。私は私のものを改善できることを知っています!