先日のKusoKoudoKaig4で優勝した。

What is KusoKoudoKaigi

KusoKoudoKaigiというのは、クソコードを扱ったプログラミングコンテストである。

これまで4回行われている。

Why I did

理由(コーディングする):

これらを理由に、じゃあ、ソートアルゴリズムをクソコードで実装してみるか、という気持ちになった。

参加する理由:

What I did

kuSortというのを作った。(GitHub Repository)

background

複数人数間で並行して同じタスクに取り掛かり、かつ、それぞれが異なる手法を使ってやる、ということは現実社会で時々見かけるけれど、それを壊れない感じでやろうとするととても大変。

では、ソートについて、並行して、異なる手法でやろうとするとどうなるか、ということに挑戦してみた。

how

線形探索で実行が終わるようなソートアルゴリズムを対象に、ソート実行ごとに使用するアルゴリズムを都度都度変更していく、というものである。

タスクを分割するわけではなく、各々が自分のアルゴリズムに従いつつ、他のアルゴリズムが実行するときには、作業をせず、自分の番になったら、自分が前までやったところから再度ソートを開始するというものである。

現実におけるタスク分割がそうであるように、コードにおいても壊れないようにするのは至難の技だし、また、実際にかかる時間も最悪のものになる。

Result

同率優勝しました。

評価者らは、このコードの意図に気づいたときは、とてもつらい感情になったようだ(狙い通り)。

感想

コードコンテストなるものには、初めて参加したので、優勝できて嬉しかった。

コードとしては複雑でなんで動くかわからないというクソコードの要件を満たしつつ、 かつ、現実のバカバカしさをいい感じに表現できたので、 私個人としても出来は評価できる。

データ構造やアルゴリズムに関して、自分は全く詳しくないので、実装でも相当苦労した。 同僚に『構造化並列プログラミング―効率良い計算を行うためのパターン』は良い本であると勧められたので、覚えておこう。