先日の回答例とIOCCC

トラックバック(0) コメント(2)

ioccc_newbern.png

先日の「nakanaide('-')/ gusun(;;)」を無理やりコンパイルさせる問題

とりあえず現時点で把握しているのは、Twitter経由で聞いた大臣がやってくれたと言う事のみ。

他の人に関しては、トラックバックもコメントも無いのでなんとも分かりません。もし「私やってみたよ!!」って人が居れば、コメントに書くなりトラックバックするなりしなさいよね!!(ハルヒ風に

 

さて、ウチの場合の回答例も書いておきましょう。なお、大臣のようなストーリー性も糞もない、いたって単純なコードです。

 

#define gusun 9;for
int nakanaide(char c){return 10;}

void main(){
nakanaide('-')/ gusun(;;)
;
}

 

うはははは、超単純。行末にセミコロンがないのも、次の行にセミコロンを書けば良いのです。「前後に文を追記する事は幾らでも可能」なのですから。と言うかforだから、大臣みたいに次の行に普通の文を書くのも可能だと言う事には、実は大臣の回答を見て始めて気づいたとかね。(何

今回の問題ではなかなかにスラッシュが曲者で、これを割り算の式に使えば良いと言う所までは分かるものの、次がforなので数値演算として成り立たない・・・。まぁこれに対する解は、大臣の回答にもあるようにセミコロン「;」を入れる事。そうすれば違う文として分ける事が出来るので、難なく処理できると言う事でした。マクロの使い手ならすぐ出てきた発想だったかもしれませんが、#defineをせいぜい普通の定数宣言、関数マクロにしか使わない人にとってはちょっと思いつかない発想だったことでしょう。

 

さて、この企画の元ネタなのですが、色々ググりつつ記憶を手繰り寄せてみた結果、「IOCCC」と言うサイトに辿り着きました。IOCCCってのは、「The International Obfuscated C Code Contest=国際邪悪なCコードコンテスト」の略称で、いかに汚く、読み辛く、難解なコードを書くかを競う(競って、逆説的に綺麗なコーディングを心がけるように訴えかける事が目的らしい)コンテストです。が、単に汚く、読み辛く、難解なコードを書くだけならば幾らでも書けます。なので評価基準としては、単に汚く、読み辛く、難解なだけでなく、奇抜で、ハイセンスで、トリッキーで、"芸術的"でなければなりません。

一体どういうコードを「汚く、読み辛く、難解で、奇抜で、ハイセンスで、トリッキーで、芸術的」と言うの・・・?と思うでしょう。そういう人は過去の入賞作品を見てみると良いです。多分恐らく一発で分かると思います。(何

 

・・・んまぁ微妙なのもあるので・・・。例えば2004年度作品であればanonymous.carachnid.comoikane.c 辺りでしょうか。anonymous.c は遠目で見ると実は顔。arachnid.c は迷路、omoikane.c に至っては萌え系AAなのだから酷いwwww(ちなみにモエかんと言う奴のキャラらしい。作者は日本人かと思えば、どうも「Don Yang」なる外国人らしいのだからタチが悪い・・・w)

ちなみにこの記事の一番上部の画像「IOCCC」のアスキーアートも、実はソースコードであって、2004年度の newbern.c と言う作品だったりします・・・。(あ、ちなみにIE6とかだと改行空白トリムされちゃうっぽいので、どっかに保存して適当なエディタで開いて見てね。タブは8で。これはnewbern.cに限らず全部のソースコードに共通のお話)

勿論、単にAAしてるだけじゃなく、改行スペース整形した所で意味プーなトリッキーコード。いやはや、一体どこからどう手を付けて解読していけばいいのやら・・・。

 

・・・んまぁ、何ていうか、見ての通りこんな企画、コンテストです。(何

 

んでまぁ、そんなIOCCCなのですが、昔はもっとまともでした。

・・・いや、まとも・・・なのかな・・・?元々この企画自体狂ってるのでなんとも言えませんが。(何

この時代だとAAとかは余りありません。ただまぁ難解さは相変わらず・・・ですが。(何

 

この時代の作品の特徴は#defineを使って、面白可笑しく難解にしている所ですね。
中には「char」で書いてあるのにその実態がdefineで「k['a']」とか定義されてて「ちょwww」みたいのもあったりします。他にも「#define o define」とすることにより「#o」が#defineの代わりになると言うのもあってまさに目からウロコ。そしてゲシュタルト崩壊ですね。#defineってこんな使い方も出来るのかぁ・・・と言う・・・。(ちなみに#defineは余りに何でも出来ちゃうので、後々には面白みがなくなっちゃって余り使われなくなっていったみたいですね。これもまた凄い・・・w)

#defineのゲシュタルト崩壊的(今まで定数宣言と簡単なマクロ関数にしか使ってなかったがそれ以外)な使い方・・・しかしこれはIOCCCの持つ"ゲシュタルト崩壊"のホンの一欠けらにしか過ぎません。IOCCCのコードを見て、解析し、それを理解していくにつれて、貴方のCに対する考え方はどんどんゲシュタルト崩壊していく事でしょう。しかし、そうした既存概念の崩壊の中で、初めて見えてくるものもきっとあるはず・・・!!

 

・・・まぁ私は全然、せいぜい#defineくらいしか崩壊してないので、
本当にそうであるかは何とも言えませんがね。(何

トラックバック(0)

このブログ記事を参照しているブログ一覧: 先日の回答例とIOCCC

このブログ記事に対するトラックバックURL: http://www.nwhite.info/mt4/mt-tb.cgi/105

コメント(2)

て言うかゲシュタルト崩壊ってこういう使い方であってんのかイマイチ分かってないんだけどね。
・・・まぁいいや。(いいんかい

うん、まあ使い方間違ってますな(笑

同じ文字をじっと見てると、なんだかその文字が本当にその文字であるかどうか判らなくなってくる、ってのがゲシュタルト崩壊ですな。
まあ詳しいことはWikipediaにでも! 一応心理学用語ですわ。

↓これをずっと見つめてたらきっとそうなる。フォントを大きめにするとより顕著に。

そそそそそそそそそそそそそそそそそそ
そそそそそそそそそそそそそそそそそそ
そそそそそそそそそそそそそそそそそそ

コメントする

最近のブログ記事

Lensterさんの解答SUGEEEE
Lensterさんもやっててくれたみたい…
先日の回答例とIOCCC
先日の「nakanaide('-')/…
次のコードをコンパイル出来るようにしなさい。
次のソースコードをコンパイル出来るように…
Twitter (一行日記的運用):