2012年05月03日

IOCCC 国際邪悪なCコードコンテスト

じゅりあんです。
最近プロコンやらACMやらお誘いがくるのですが,どうにも去年までのようなやる気が出てこなくて,このままではダメ人間になってしまうと危機感を募らせています。

ところでIOCCCという大会があることをご存知でしょうか。
正式名称は「The International Obfuscated C Code Contest」直訳すると「国際邪悪なCコードコンテスト」になります。
Cソースコードを故意に読みにくくしてその汚さなどを競う大会です。
汚いといっても教育なんかでインデントを知らない新入部員のソースコードのような読みにくさではなく,ソースコード自体をASCIIアートのようなものにしたりだとか,一見コンパイルできないんじゃないのかっていうものだったりだとかそんな感じの「汚い」です。
まぁその他詳しくはWikipediaとか公式サイト(英語)とか見てみるといいです。

この大会はここ数年やっていなかったのですが,なんか突如として2011年に大会をやっていたようです。
その中で一番僕が気になったのが「akari.c」です。

以下がそのソースコード。
akari.png
ファイル名の通り某アニメ主人公なASCIIアートとなっています。
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を変換すると\アッカリ〜ン/の文字が現れます…。
akkari-n.png
ASCIIアートのダウンサンプリングにも対応しており,akari.cをakari.exeに通してakari2.cを出力すると見事に小さくなったあかりが出てきます。
それだけかとおもいきやこいつをさらにコンパイルすることもできるようです。
akari2.png
このダウンサンプリングは3段階まで可能で,ダウンサンプリングしたものを組み合わせることでROT13のフィルタにもなります。

さらにさらにこのソースコードはBrainf*ckのソースコードにもなっていて,実行すると以下の文章を出力します。(BrainF*ckインタープリタで実行の結果)
ITSUMO MIRAKURU
ITSUMO MIRAKURU
ITSUMO MIRAKURU
ITSUMO MIRAKURU
MOUSOUCHUU


にしてもここまでくるともう開いた口がふさがらないという感じです。
部員の皆さんはGWの暇つぶしにこのソースコードを読んでみたりするといい勉強になるのではないのでしょうかww

まぁそんなわけでじゅりあんでした。

以下,参考文献
info:akari
わぁいakari.c あかりakari.c大好き


拍手する
posted by シス研P at 21:02 | Comment(2) | TrackBack(0) | 紹介シリーズ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
解説有り難うございます。
これにはなもり先生も苦笑いですねw
Posted by at 2012年06月09日 01:48
もっとたのしいつかいかたはこれっとおもいます:
./akari akari.c akari1
./akari akari1 akari2
./akari akari2 akari3
Posted by at 2016年12月20日 15:08
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック
Copyright © 2007-09 SYSKEN All rights reserved.
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。