ネギのメモ帳

Twitterに書ききれないことをたまに書いたりするかもしれないスペース

買うべきか買わざるべきか, それが問題だ (クッキー・クリッカーの話)


Cookie Clickerとはいま流行りのクッキー焼きゲームである.
1年くらい経って見返したときになんのことか忘れている可能性もあるので, 一応このことを書き留めておく. さて.


今,  v_0 cps(cookies per second) の速さでクッキーを生産している. 現在のクッキー所持枚数は C枚だ.
価格が Pの中間商品がある. これを買うとクッキーの生産速度は v_1に達する.
しかし,  A枚まで貯めればさらに効率のいい商品が買える. 待つべきか否か.



<証>
速度が v_0のままで t秒経過した場合,
所持クッキー枚数は  C + v_0 t になる.
 P枚支払って速度を v_1に上げた場合,
 t秒後の所持クッキー枚数は  (C-P) + v_1 t である.
 v_1 > v_0と仮定しているので, いつかはこの2つのクッキー枚数が等しくなる時がくる.
それを T秒後とする. すなわち,
 C + v_0 T = C-P + v_1 T
が成立するとする.  Tについて整理すると,
 T = \frac{P}{v_1 - v_0}
となる.


この T秒後の枚数が A枚より少ないとき, 式で表せば
 C + v_0 T < A のとき, かつその時に限り,  P枚を支払う価値がある.
なぜなら,  A枚に達するのが T秒より後の場合, それに要する時間はcpsが高ければ高いほど短いし,
逆に T秒より前の場合, 要する時間はcpsが低いほど短いからである.
この不等式から Tを消去して, 整理しよう.


 C + v_0 \frac{P}{v_1 - v_0} < A
 \frac{v_0}{v_1 - v_0} < \frac{A - C}{P}.
あるいは同じことだが,
 \frac{A - C}{P} \frac{v_1 - v_0}{v_0} > 1.


すなわち,
現在のcpsから購入によってどのくらい変化するかの比,
[目標枚数と現在枚数との差] と購入価格との比,
この2つを計算し, その積が1を超える場合には購入し,
そうでない場合は目標枚数まで耐える, ということになる. ■


枚数計算は上から4桁目を四捨五入する程度の精度で十分であろう.
アップグレードアイテムによっては増加比がずばり与えられているものもあるので(cps 1%アップなどがそれだ),
その場合は \frac{v_1 - v_0}{v_0} を計算しなくとも比の値をそのまま用いれば良い.