好きな画像を入れると、4つのソートが同時に走り出して、全部が謎ノ美兎になります。まずは下で試してみてください。
- 画像を読み込む:スマホの写真でも、イラストでもOK。画像はブラウザの中だけで処理され、送信されません
- 4つのプルダウン:それぞれの画面のアルゴリズムを選べます
- 速さ:1コマで何手進めるか。4つとも同じ速さなので、純粋に手数の勝負です
- 音で聞く:赤い枠の画像を音にして鳴らします。下に出るスペクトログラム(音の周波数の図)にも、並べ替えの途中の画像が流れ、最後は謎ノ美兎の顔になります
- 動画保存:最初から最後までを動画にできます
ミコンスキーまずは自分の写真やお気に入りのイラストで遊んでみてください。何を入れても、最後は同じ顔になります。
作ったきっかけ



前に、画像を並べ替えて謎ノ美兎にするツールを作ったら、「淡々とした恐怖がある」と言われたんです。



その「淡々と」の正体は、たぶん手順が機械的で、結末に例外がないこと。それなら、並べ替えの手順そのもの(ソートアルゴリズム)を見せたら、もっと淡々とするはず…と思って作りました。
謎ノ美兎ソートとは
ソートは「2つを比べて、順番が逆なら入れ替える」の繰り返しです。謎ノ美兎ソートは、この比べ方だけを変えています。


- 画像を96×96に縮めて、横1行ずつに分けます
- 行ごとに、元の画像の画素を暗い順に並べます。謎ノ美兎の同じ行も、暗い順に並べます
- 同じ順位どうしを対応させて、それぞれの画素に「行き先の列」の番号を振ります
- あとは、その番号の小さい順にソートするだけです



ソート自体は普通のソートです。「何を正しい順番とするか」を謎ノ美兎にしただけなんです。



並べ終わったときの並びは1通りしかないので、どのアルゴリズムを使っても結果は必ず同じになります。
アルゴリズムで「過程」がまったく違う
結果は同じでも、途中の見た目はアルゴリズムごとにまったく違います。同じ画像を4つのアルゴリズムで並べ替えて、途中経過を並べました。


- バブルソート:右端から少しずつ確定していく。いちばん遅い
- 挿入ソート:左側から並びが整っていく
- クイックソート:ブロックごとに一気に確定していく
- マージソート:縦の帯が倍々に広がっていく



マージソートの途中(50%〜75%)が、顔の破片が縦にずれて並んでいて一番不気味でした。
入っている7つのアルゴリズム
手数は、サンプル画像(模様)を96×96で並べ替えたときの実測値です。
| アルゴリズム | やっていること | 比較の回数 | 見どころ |
|---|---|---|---|
| バブルソート | となり同士を比べて入れ替え続ける | 423,707 | 右端から顔が確定していく |
| 挿入ソート | 左から順に、正しい位置へ差し込む | 246,435 | 左側から並びが整っていく |
| クイックソート | 基準より小さいか大きいかで分け続ける | 72,575 | ブロック単位で一気に確定 |
| マージソート | 小さな列を整列済みにして合体させる | 64,512 | 縦の帯が倍々に広がる |
| スターリンソート | 順番を乱すものを消す | 9,120 | 最速。ただし画素がほぼ消える |
| 並行世界ソート | 整列していない世界をすべて破棄する | — | 一瞬で終わる(ことになっている) |
| ボゴソート | ランダムに並べ直して、偶然そろうのを待つ | 終わらない | 永遠にノイズ |



下の3つは、ネットで生まれたジョークのアルゴリズムです。せっかくなので全部入れました。
スターリンソート:順番を乱すものは粛清する


左から順に見ていき、ひとつ前より小さいものが出てきたら消してしまいます。並んではいますが、残ったものしか並びません。
画像で実際に走らせると、9,216個の画素のうち8,628個(約94%)が粛清されました。残った588個だけが正しい位置に並ぶので、暗闇に輪郭だけがうっすら浮かびます。



レースでは毎回1着です。ほとんど何も残らないのに。
並行世界ソート:整列していない世界を破棄する


並べ方がランダムに分かれた世界のうち、整列していない世界をすべて破棄すれば、残った世界では最初から整列している、という理屈です。96×96の画像だと、1行の並べ方は96!通りで、それが96行あります。破棄する世界は約10の14,400乗個です。



もちろん本当に宇宙は破棄できないので、0.9秒ほど「破棄している演出」を見せたあと、整列済みの結果を表示しています。そこは正直に書いておきます。
ボゴソート:終わりません


ランダムに並べ直して、偶然そろうのを待ちます。全部の行が一度にそろう確率は、だいたい10の14,400乗分の1です。画面には「終わりません」と表示され、本当に終わりません。



宇宙が終わるほうが先です。
4つ同時に走らせると、順位がおかしい
最初に並んでいる4つ(バブル・クイック・スターリン・並行世界)を、同じ速さで走らせた結果です。






| 順位 | アルゴリズム | かかった時間 |
|---|---|---|
| 1着 | スターリンソート | 0.08秒(ほぼ全部消したので) |
| 2着 | 並行世界ソート | 0.91秒(世界を破棄したので) |
| 3着 | クイックソート | 1.40秒 |
| 4着 | バブルソート | 5.03秒 |
時間は手元の環境(速さ「15手/コマ」)での一例です。端末の描画速度で変わりますが、順位は変わりません。



まじめに並べたアルゴリズムが3着と4着。ズルをしたものほど速い、という結果になりました。
うまくいかない画像もあります


夕焼けの空のように、横1行の明るさがほぼ同じ画像は苦手です。並べ替えは同じ行の中でしか起きないので、その行に暗い画素がなければ、謎ノ美兎の暗い部分(目や髪)を作れません。





画素を「入れ替える」だけで、色を「塗り替えない」のがこのソートのルールなので、ここは直さずにそのままにしています。
うまくいくのは、1行の中に明るいところと暗いところが混ざっている画像です。柄の多い写真、人物、イラストなどは、だいたい顔になります。
なぜ「淡々と」怖いのか
作りながら考えた答えは、手順に感情がなく、結末に例外がないからです。
- どの画像を入れても、同じ手順で、同じ顔に行き着く
- カウンターは比較の回数を数えるだけで、何も言わない
- 終わっても演出はなく、順位と秒数だけが出る



演出を足すより、削るほうが不気味になる。今回いちばんの発見はそこでした。
いかがでしたか?





自分の画像で試したら、ぜひ動画保存してX(Twitter)で見せてください。スターリンソートの粛清率が高い画像を見つけた人がいたら教えてほしいです。
まとめ
- 謎ノ美兎ソートは、「比べ方」を謎ノ美兎にしただけの、普通のソート
- ゴールの並びが1通りなので、どのアルゴリズムでも結果は同じ
- 過程はアルゴリズムごとにまったく違う(マージソートの途中がいちばん不気味)
- スターリンソートは最速だが、画素の約94%を粛清する
- 並行世界ソートは、約10の14,400乗個の世界を破棄して2着
- ボゴソートは終わらない
- 行ごとの明るさが一様な画像(空など)は苦手
音を周波数の図にすると謎ノ美兎が浮かぶ「謎ノ美兎スペクトログラム」も作りました。あわせてどうぞ。
※ 謎ノ美兎のファン作品(二次創作)です。










コメント