第3回 mixC Code Golf 結果報告

アバター
あーる@Reputeless
記事: 84
登録日時: 15年前
住所: 千葉

第3回 mixC Code Golf 結果報告

投稿記事 by あーる@Reputeless » 14年前

#第3回 [2^n]#

[問題]
2^0 から 2^16 までを表示する

[出力]
1\n
2\n
4\n
8\n
16\n
32\n
64\n
128\n
256\n
512\n
1024\n
2048\n
4096\n
8192\n
16384\n
32768\n
65536\n

[期間]
10/24(日)18:00 ~ 10/29(金)23:59

                          
=結果=

投稿数 7件(5人)

1位 (43B)
Justy さん
五反田 さん
ideyan さん
roxion1377 さん

*1位1番乗り
Justy さん

*1位のコード
n;main(){for(;n<17;)printf("%d\n",1<<n++);}

                          
★解説

今回のポイントは次の3つです。

グローバル変数は0で初期化される
プログラム中で利用する変数を0で初期化したい場合、グローバルで宣言することで、=0 をカットできます。

前置き++と、後置き++を区別する
前置き型のインクリメント/デクリメント演算子は、式全体の処理の前に1加算/減算を行いますが、後置き型は式全体の処理が終わってから1加算/減算されます。

2の累乗倍は << を使って得られる
左シフト演算子 << によって、* を使わずに2の累乗倍を得られます。

                          
興味が出てきたら、コミュニティ「Code Golf を楽しもう」まで!
初心者の方でも楽しめる問題を用意しています!
http://dixq.net/mixC/community/11

-
最後に編集したユーザー あーる@Reputeless on 2010年11月10日(水) 11:33 [ 編集 1 回目 ]

アバター
a5ua
記事: 199
登録日時: 15年前

Re: 第3回 mixC Code Golf 結果報告

投稿記事 by a5ua » 14年前

1バイト減ったー

CODE:

n;main(){while(printf("%d\n",1<<n++),n<17);}

xxx
記事: 26
登録日時: 15年前

Re: 第3回 mixC Code Golf 結果報告

投稿記事 by xxx » 14年前

1位だったー
ショートコーディングって難しい^^:

アバター
五反田
記事: 21
登録日時: 15年前

Re: 第3回 mixC Code Golf 結果報告

投稿記事 by 五反田 » 14年前

>>a5uaさん
それ44Bじゃありません?

引数を利用する43Bコード

CODE:

main(n){printf("%d\n",n),n<<16&&main(n*2);}

アバター
a5ua
記事: 199
登録日時: 15年前

Re: 第3回 mixC Code Golf 結果報告

投稿記事 by a5ua » 14年前

うわ、比べるほうを間違えてたw寝ぼけてんな

アバター
あーる@Reputeless
記事: 84
登録日時: 15年前
住所: 千葉

Re: 第3回 mixC Code Golf 結果報告

投稿記事 by あーる@Reputeless » 14年前

> a5ua さん
> 五反田 さん
朝早くからコメントありがとうございます。
いろいろな解き方を考えてくださると、みんなの勉強になります!
五反田さんのコードは、for を main 再帰に置き換えたり、
n のビットを左シフトで追いやって、ループ終了を判断する面白いテクニックです。
問題が「 2^24 までを表示する」とかだったら、42B にもできるなぁ (゚д゚

>roxion1377 さん
初1位 おめでとうございます。
今回は差が出るだろうと思ってたのに、またもや接戦でびっくり。

アバター
五反田
記事: 21
登録日時: 15年前

Re: 第3回 mixC Code Golf 結果報告

投稿記事 by 五反田 » 14年前

>>あーるさん
この問題でもコンパイラがintを18~20bitとして扱う変則的なものだったら、以下のようにしてさらに41Bにまで縮められると思います。

CODE:

main(n){printf("%d\n",n),n*2&&main(n*2);}
gccのオプションでそういうものがないか必死に探してみましたが、みつかりませんでした。トホホ。