太鼓さん次郎EDIT by GONZUXの曲を人力でソートする

2016/02/17

実行ページへ

こんにちは。生きてます。

ソートするには

初めに、ソート対象を選択します。LEVEL別に選択することが出来ます。
次に、与えられた二択問題に答えていきます。例えば、曲の難しさでソートしたい場合は、より難しい曲を選択していきます。簡単な順にソートしたい場合は、より簡単な曲を選択していきます。
結果が順次確定し、表示されていきます。欲しい曲数を満足するまで二択問題に答えていきます。

プログレスバーについて

ソートアルゴリズムに、HeapSortを採用しています。HeapSortは、大きく2つのステップに分けることが出来ます。Heapの構成と、結果の取り出しです。プログレスバーには、これら2つのステップがどの程度進行しているかが、おおよそ表示されます。

HeapView

ソートアルゴリズムに、HeapSortを採用しています。HeapViewには、そのHeapの内容がリアルタイムに表示されます。HeapViewの文字をクリックすると、表示と非表示を切り替える事ができます。非表示になっているHeapViewは、表示のための処理を行わないので、全体の処理が軽くなります。見た目の変化が伴ったほうが、ユーザーに潤いを与えるのではないかという粋なはからいです。

内部の挙動について

前述のとおり、ソートアルゴリズムにはHeapSortを採用しています。理由は、上位から順番に結果がわかることで、ユーザーがソートを打ち切ることが出来ることと、そこそこ効率が良いことです。
言ってしまいますが、二択問題は、非常に長いです。22要素を並べるために、70問くらいの比較問題に答えました。自分なりのしっかりとした基準(どちらがハード抜けしにくいか等)を持って、直感的に挑むことをおすすめします。
ユーザーの選択は、内部に記録されています。一度回答した二択問題は出題されません。

制作後記

今回の制作での、一番の収穫は、なんといってもジェネレータの扱いの習得でしょう。簡単に言えば、関数の動作を一時停止して、また再開することが出来るようになったのです。まず、普通にHeapSortを実装しますよね。そして、その比較部分でユーザーに処理を任せたいわけですが、ここでHeapSortを一時停止して、ユーザーの入力を待たなければならないわけです。こんなことは、ジェネレーター無しでは難しいですよね。alert関数みたいなものを自作する際の助けになりそうです。

実行例

最後に、管理人が ★×10以上の曲をハード抜けしにくい順にソートした結果を貼っておきます。誰かが、TOP20に入るくらいの譜面を書きたいと言っていました。ふざけんな。

★×10以上の曲をハード抜けしにくい順にソートした結果(2016/02/17)

★×10以上の曲を2016年の2月17日にハード抜けしにくい順にソートした画像

★×10以上の曲をハード抜けしにくい順にソートした結果(2016/05/29)

★×10以上の曲を2016年の5月29日にハード抜けしにくい順にソートした画像

それでは、また。

続けて読む…

コーディングで流す曲5選

2020/12/26

kurage - IT企業のフォロー関係を分析し、企業やエンジニアをランク付けする

2018/08/25

「クロージャは関数と環境のペア」とは?(JavaScript)

2023/12/02

Blenderと魚

2017/06/13

春のLT大会まとめ

2019/05/18

夏だからGatsbyのランタイム全部消す

2021/08/02

書いた人

sititou70のアイコン画像
sititou70

都内の社会人エンジニア3年生。Web技術、3DCG、映像制作が好き。