ヘクトのメモ

なんとなくいろいろ書いていくと思います.

Ankiを用いた競プロ練習管理

この記事はCompetitive Programming (1) Advent Calendar 8日目の記事です。*1

モチベーション

最近、この本を買って読みました。
gihyo.jp

この本の一節にAnkiと呼ばれる暗記学習の管理ツールが紹介されており、最近はそれを使って英語の勉強をしています。
他にも、いろいろ使いこなして行くうちに多機能なので、競プロの練習管理に応用できないかと考え始めたのが今回の記事の始まりです。

Anki

Ankiは暗記学習の管理ツールで、カードによって暗記する対象を管理します。
カードをまとめたものをデックと呼び、学習の際にはデックの先頭に来ているカードから順に学習します。
学習の際には、カードを見て覚えているかどうか判定します。
制限時間内にカードに正解すれば次に出題されるまでの間隔が伸びる、そうでなければ比較的すぐに再出題されます。
カードの並び替えは管理ツールが勝手にやってくれるので、日々デックに積まれているカードを処理していくだけで覚えていけるというものです。

個人的には、さらに時間が来たら音を鳴らしたり、自動で次のカードに遷移したりしてくれる以下のようなAdd-onを使うと便利です。*2
Speed Focus Mode (auto-alert, auto-reveal, auto-fail) - AnkiWeb

競プロへの応用

ここからが本題です。
レッドになるあたりまでは、典型問題を時間内に解けることが大事だという話をよく聞きます。*3
それなら、典型問題に対する解法を身につけるまで繰り返し解くのは割と有効な学習戦略なのでは?と思ったりします。
ただ、働いていると競プロをやる時間は減っていくし、典型問題を探すパートに時間を割きたくないのです。
ということで、Ankiを使用することを思いつきました。

現状

ARCでコンテスト時間内に解けなかった問題を収集して、デックを作りました。*4
各カードは以下のような感じで表示されます。
f:id:osrehun:20181209185152p:plain
ただ、最近は仕事やら競プロ以外の趣味などで忙しくて、問題を解く時間があまり取れていない...

やる気があれば、以下のデックを追加で作成したいという気持ちもあります。

  • ARC、AGC
  • SRM、CF
  • ABC
  • 人々がアップロードしている問題集

などなど
あとは、競プロ用のadd-ons作成とか?? *5

まとめ

Ankiを利用した競プロ練習管理方法を紹介しました。
こういったツールを利用して進捗管理するのは良いのかもしれません。
まだ、システムとしてはベータ版なので引き続き自分でテストプレイしていきます。
デックのフォーマットなどの基本的な部分に関しては、そのうち公開したい。

*1:遅れてすいません。

*2:自分でカスタマイズしたいけど、そこまで時間を割り当てられていない。

*3:実際は応用力もそれなりに重要だと思いますが

*4:Pythonスクレイピングした。

*5:仕様から考えないと...