続サイズ対決
(0)
- かつてKは、サイズ対決と称して、同じ内容のアプリをさまざなOS向けに書き直した場合の最小サイズの比較をやっていました。
- あれから月日もたったので、もう一度やろうと思います。
- なお、MS-DOSのCOMファイルのようにシグネチャを含まない実行ファイルはペナルティとして2バイトを加算します。
- シグネチャが1バイトの場合は、1バイトのペナルティです。
- このルールは、私たちがシグネチャを削って判定にしくくなった実行ファイルの流行を望んでいないためです。
- おことわり:
- そもそもこんな小規模なアプリでは実際のユースケースを反映していないという指摘は十分すぎるほど説得力があります。しかし規模が大きくなればなるほど、作り比べるのが大変になります。ですからまずこの辺りから始めるのは、十分に合理的であるとKは考えます。
(1) hello, world対決
- 画面に「hello, world\n」を出力すること。それだけです。
- 末尾に!は入れません。これはK&Rのサンプルに由来します。
- コンソールを持たないOSは、改行を出力しなくても構いません。
(2) chars対決
- 画面にキャラクターコード0x20から0x7e(印字可能なASCIIキャラクタのすべて)を出力するという課題です。順序は逆順でも構いません。
(3) グラデーション対決
- 画面の256x256ピクセルの領域に、それぞれ違う色で点を描画します。32Kカラーしかサポートできない場合に配慮して、同じ色の点が2つまでならあってもよいとします。3つ以上あったら課題を満たしていません。
- したがって32K未満のカラーモードしか持たないOSは、この課題に参加できません。
- 上記の条件を満たしていれば、グラデーションになっていなくてもOKです。
OS/VM | サイズ(バイト数) |
osecpu124d以降 | 6 |
(4) bball対決
- 定番の以下の画像を描画します。むやみに拡大縮小してはいけませんが、1ピクセル程度の誤差は許容します。色はこの配色ではなくとも構いませんが、色数を減らしてはいけませんし、線が重なるところはどちらが先に描画しても結果が同じになるように、OR演算でやってください。
- OR演算で描画できない場合は、この課題を満たしていないと判断します。

(5) コルモゴルフ複雑性対決
- Wikipediaには「コルモゴルフ複雑性」というページがあり、そこにマンデルブロ集合の画像があります。
- その画像にはキャプションがあり、以下のように書かれています。
- この画像はフラクタル図形であるマンデルブロ集合の一部である。このJPEGファイルのサイズは17KB以上(約140,000ビット)ある。ところが、これと同じファイルは140,000ビットよりも遥かに小さいコンピュータ・プログラムによって作成することが出来る。従って、このJPEGファイルのコルモゴロフ複雑性は140,000よりも遥かに小さい。
- それならば、この画像に十分に近い画像を何バイトのプログラムで書けるのかを競おうではないかというわけです。
- 解像度は1024x768です。色数はフルカラー以上です。
OS/VM | サイズ(バイト数) |
osecpu125d以降 | 99(予定) |
- 画質を十分に上げるために、4x4=16サンプル以上のオーバーサンプリングをするべきだと感じます。その方がずっと上記画像に近いです。
OS/VM | サイズ(バイト数) |
osecpu125d以降 | 117(予定) |
(6) マンデルブロ集合対決
- 上記(5)の対決は要求スペックが高すぎるかもしれないので、もっと簡単なマンデルブロ集合画像の表示で競います。これは二値画像です。
(7) invader対決
こめんと欄