ソートアルゴリズムを暗記するためのゲームを作ってみた

最近、courseraでアルゴリズムを勉強していました。そのときやった練習問題の1つのタイプに「xxxソートで4回スワップした結果を書きなさい」というものがあって、これがなかなか勉強になりました。イメージができれば、コーディングはだいたいできるので、このような作業を繰り返しやれば、空で基本的なソートアルゴリズムくらいコーディングできるようになると思います。

それで、この練習問題をするとき、紙に書いてやっていくとなかなか時間がかかります。数回の操作につき1回は全ての配列の状態を書き直す必要があるからです。それで、もうちょっと気楽にポチポチとやれるものが欲しいなと思ってゲームっぽいものを作ることにしました。

それでできたのが、これです(ただしまだコマンドライン上でしか遊べない)。

ゲームっぽいところは、スコアがあるところと、ミスせずに成功した回数がコンボとして数えられるところ、コンボが続くとボーナスポイントが入るところです。普通に起動すると、Selection, Insertion, Shell, Heap, Quick, Mergeでランダムに与えられた長さ10の配列をソートすることになります。ソートし終わると、新しい配列が生成されます。

作った動機

  • 紙で書くのは大変。カードでやっても良いけれどもどれくらい頑張ったか見れない
  • なんらかの試験を受けるときは、暗記しないと話にならない
  • なんらかのアルゴリズムを設計するとき、基本的なアルゴリズムを理解していないと話にならない
  • ゲームとしても面白いんじゃないか?
    • いくつかのタイプの作業を言われたり、見て瞬間的に判断してやることを繰り返すようなタイプのゲームはけっこうある

それぞれのモードの動画

Selection

mrkrで"1"と表示されているindexのところまでソートされています

Insertion

Shell

間隔はh = 3 * h + 1で決めます

Heap

配列をツリー状にしたものも表示します

Merge

Quick