Hatena::ブログ(Diary)

pepshisoの日記

2011-08-21

C++で40バイトのHello Worldを書いた

Hello Worldはプログラミング言語の入門書でおなじみのプログラムで、入力を受け付けず、"Hello, world!"を出力するプログラムです。Hello Worldを、C++で40バイトのものを書きました。

main(){__builtin_puts("Hello, world!");}

これだけではよくわからないと思いますので、順を追って説明します。

C++で普通にHello Worldを書くと次のようになります。

#include <iostream>

int main()
{
    std::cout << "Hello, world!\n";
}

長いですね。削除できる空白や改行を除いても60バイトもあります。まずiostreamのかわりにCのstdioを使って書きなおします。

#include <cstdio>

int main()
{
    puts("Hello, world!");
}

51バイト。main関数の戻り値の型を消しましょう。

#include <cstdio>

main()
{
    puts("Hello, world!");
}

47バイト。実はC++では戻り値の型を省略できないことになっているのですが、g++では警告が出るもののコンパイルが通りました。さてincludeが邪魔ですね。削除しましょう。

main()
{
    puts("Hello, world!");
}

これで30バイト!と言いたいところですがg++には通りませんでした。C++の規格からすると当然なのですが。そこでputs関数の代わりに、ヘッダをインクルードする必要がないビルトイン関数の__builtin_putsを使います。

main()
{
    __builtin_puts("Hello, world!");
}

空白や改行を削除して

main(){__builtin_puts("Hello, world!");}

40バイトのHello Worldの完成です。

2011年8月22日現在、Anarchy Golfというサイトでこのコードが1位になっています

f:id:pepshiso:20110822021926p:image

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/pepshiso/20110821/1313947582