intime o'

考えてみれば、アイスクリームなど好きでさえないのに (アダム・ファウワー著・矢口誠訳「数学的にありえない」・下より)
忘却曲線 2012/02/14(Tue.)
最近キーボードを新調しました。黒軸のやつ。FILCOのやつ。
買う前にもネットで色々調べはするんだけど結局お店に行って
調べてたのとは違うのを買ったりして、それからまた一層、
買って帰ってきてからも調べると、FILCOのメカニカルキーボードは
すぐチャタるらしい。チャタリング、って一ヶ月くらい前に学校の
授業で習った言葉だ。すごい。学びが役立った。

またそれとは本当に関係なくて、最近買った昔の本のオマケCD-ROMに
ミニゲームのタイピングゲームがあって、頑張ってた。

一文字、もしかしたら一単語を正しくタイプすることで得る得点は
func(N)
という関数だ。ここでNというのが「いくつ連続で正解しているか」
というやつでいわゆる「何コンボ」というやつ。
大体のタイピングゲームってたぶんこうだと思う。
んでしかもほとんど定数で、例えば
f1(N) = 1 + 0.001*N
f2(N) = 2 - 1/N
こんなんだと思うよ。もちろんNに対して点数は単調増加であること、
きっとこれだけが唯一の条件だと思う。

どうもおかしいと思ったらこういうことだった。
func(N, score)
何コンボかに合わせて、今現在の得点にもまた依存していた。
正答するという手続きは
function AnswerTrue(N, score){
    return [N+1, score + f(N, score)]
}
で表される。

ゲームをやってて気附いたコトには、Nがある程度大きくなると、もはや、
f(N, score) = score
となっているコトに気附いて簡単に一番上のレベルをクリアできた。
つまりそのNではほとんど一文字を正解するごとに得点が倍々に
なるので、速度よりも正確さに重点を置かないといけない。

例えばこのような得点の関数だったとしよう。
f(N, score) = 1 + (score - 1) * atan(N/50)*2/π
なんだっていいんだけど、
atan(x) は x=0 の時にゼロで、 x→∞ で1に近づく単調増加の関数。

どうせNなんて100もいかないだろうし、現実的には対数でもいいと思うけど。
得点fはN=0で1、N→∞ でscoreになる。
つまり、初めの方は得点は score → score + 1
次第に score → score * 2 となる。はっきり言ってヒドイ。
気付かないと絶対にクリアムリだもん。

例えば、N = 0, score = 0 の時点から連続で10回正答した時点で、
スコアは13.6ちょっと。
次に正解して得る得点は2.585くらい。失敗してN=0になってから
正解したら1。速さに註意する2.585倍の註意を払う必要がある。

20回連続でやれば スコアは91.77、次に得る得点は 23。
「10回連続で正答する」の9倍くらいの得点を「20回連続の正答」で
得られる。

全部で100回タイプするとして、内10回ミスするとすれば、
少しでもコンボに依存するらなら、一様にミスするよりも
偏ってミスした方が良いことになる。
非現実的だけど。 

コメ(0) | トラ(0)