最近プロコンやらACMやらお誘いがくるのですが,どうにも去年までのようなやる気が出てこなくて,このままではダメ人間になってしまうと危機感を募らせています。
ところでIOCCCという大会があることをご存知でしょうか。
正式名称は「The International Obfuscated C Code Contest」直訳すると「国際邪悪なCコードコンテスト」になります。
Cソースコードを故意に読みにくくしてその汚さなどを競う大会です。
汚いといっても教育なんかでインデントを知らない新入部員のソースコードのような読みにくさではなく,ソースコード自体をASCIIアートのようなものにしたりだとか,一見コンパイルできないんじゃないのかっていうものだったりだとかそんな感じの「汚い」です。
まぁその他詳しくはWikipediaとか公式サイト(英語)とか見てみるといいです。
この大会はここ数年やっていなかったのですが,なんか突如として2011年に大会をやっていたようです。
その中で一番僕が気になったのが「akari.c」です。
以下がそのソースコード。
ファイル名の通り某アニメの
BCCでコンパイルできるか試してみたのですが,何事もないかのように普通に通ります。
X:\Users\******\Desktop>bcc32 -w- akari.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
akari.c:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
このソースコードの正体はPGM・PPM(画像保存形式)のダウンサンプリングツール(画像縮小)で,サンプルをダウンロードするとついてくるexample.ppmを変換すると\アッカリ〜ン/の文字が現れます…。
ASCIIアートのダウンサンプリングにも対応しており,akari.cをakari.exeに通してakari2.cを出力すると見事に小さくなったあかりが出てきます。
それだけかとおもいきやこいつをさらにコンパイルすることもできるようです。
このダウンサンプリングは3段階まで可能で,ダウンサンプリングしたものを組み合わせることでROT13のフィルタにもなります。
さらにさらにこのソースコードはBrainf*ckのソースコードにもなっていて,実行すると以下の文章を出力します。(BrainF*ckインタープリタで実行の結果)
ITSUMO MIRAKURU
ITSUMO MIRAKURU
ITSUMO MIRAKURU
ITSUMO MIRAKURU
MOUSOUCHUU
にしてもここまでくるともう開いた口がふさがらないという感じです。
部員の皆さんはGWの暇つぶしにこのソースコードを読んでみたりするといい勉強になるのではないのでしょうかww
まぁそんなわけでじゅりあんでした。
以下,参考文献
info:akari
わぁいakari.c あかりakari.c大好き