あなたの挑戦:
あなたは無限に高い建物の0階にいます。どの階でも、窓まで歩いて卵を落とすことができます。あなたの目標は、卵が壊れることなく耐えることができる最も高い床を把握することです。ただし、これを把握するために使用する卵は最大3つですが、試行回数を最小限に抑える必要があります。
正式には:
- あなたは未知の
f(n)
を返す関数を与えられます、ここでbool(n <= X)
X
0 <= X
X
(直接アクセスせずに)の値を返す必要がありますf(n)
(単一のテストケースで)False
最大3
回数だけ返す必要があります。それFalse
以上返った場合、あなたの答えは失格となります。
制限事項
スコアは、f(n)
(以下のテストケースで)行った通話の総数です
必要に応じて、関数を渡すのを忘れて、単に上記の状況を「シミュレート」することもできます。 ただし、解決アルゴリズムは何も知らない必要がありX
ます。
アルゴリズムでは、テストケースまたは最大値をハードコーディングしないでくださいX
。数値を再生成したり、さらに追加したりする場合、プログラムはそれらを処理できるはずです(同様のスコアで)。
言語が任意精度整数をサポートしていない場合は、long
データ型を使用できます。あなたの言語がどちらもサポートしていない場合、あなたは運が悪いです。
g(n) = max(g(n-1)*random(1,1.5), n+1), g(0) = 0
、またはおよそ 1.25^n
テストケース:
0,1,2,3,4,6,7,8,10,14,15,18,20,27,29,40,57,61,91,104,133,194,233,308,425,530,735,1057,1308,1874,2576,3162,3769,3804,4872,6309,7731,11167,11476,15223,15603,16034,22761,29204,35268,42481,56238,68723,83062,95681,113965,152145,202644,287964,335302,376279,466202,475558,666030,743517,782403,903170,1078242,1435682,1856036,2373214,3283373,4545125,6215594,7309899,7848365,8096538,10409246,15103057,20271921,22186329,23602446,32341327,33354300,46852754,65157555,93637992,107681394,152487773,181996529,225801707,324194358,435824227,579337939,600264328,827690923,1129093889,1260597310,1473972478,1952345052,1977336057,2512749509,3278750235,3747691805,5146052509
これはコードチャレンジであり、スコアが最も低い人が勝ちます!