cp-review.a01sa01to.com 競プロ復習ツール モデル b を節約率 ( 0 ≤ b ≤ 1 ) 、 t を経過時間 (分) とすると、エビングハウスの忘却曲線の「節約率」の近似として b ( t ) = k ( log 10 t ) c + k ( c = 1.25 , k = 1.84 ) があるらしいので、 (厳密には違うが) "忘却量" を f = 1 − b とすると f ( t ) = ( log 10 t ) c ( log 10 t ) c + k となる。 問題を n ( ≥ 1 ) 回解いたとする。 i 回目に解いた時刻は t i とする (最初に解いた時を基準とする: t 1 = 0 )。 今、時刻 t = t n + 1 において問題を解くとすると、その時点での忘却量は ∏ i = 1 n f ( t i + 1 − t i ) = f ( t 2 − t 1 ) ⋅ f ( t 3 − t 2 ) ⋅ ⋯ ⋅ f ( t − t n ) で表現できそう。 また、どう考えても難易度の低い問題はすぐに方針が立ちそう。 ということでちょっとだけ diff も考慮する。 なんとなくグラフを見ながら良さそうだったので 1 + d 8000 をかけることにした。 ( d は diff) 以上をまとめて、 ( 1 + d 8000 ) ∏ i = 1 n f ( t i + 1 − t i ) が大きいものを優先して復習することにする。 ただ、実際には問題をそう頻繁に解くわけではないので、ほぼ diff による差になってしまう。 そこで、 t を分単位ではなく日単位で実装する。 また、 10 日未満の場合にはあまり意味がない気がするので、その場合はなかったことにする。 参考 https://ja.wikipedia.org/wiki/%E5%BF%98%E5%8D%B4%E6%9B%B2%E7%B7%9A https://www.jstage.jst.go.jp/article/pacjpa/78/0/78_1EV-1-091/_pdf/-char/ja