第7回 mixC++ Code Golf 結果報告

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

第7回 mixC++ Code Golf 結果報告

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

#第7回 [Fibonacci number]#

[問題]
フィボナッチ数列を0項目から30項目まで表示する

[出力]
0\n
1\n
1\n
2\n
3\n
5\n
8\n
13\n
21\n
34\n
55\n
89\n
144\n
233\n
377\n
610\n
987\n
1597\n
2584\n
4181\n
6765\n
10946\n
17711\n
28657\n
46368\n
75025\n
121393\n
196418\n
317811\n
514229\n
832040\n

[期間]
11/20(土)22:00 ~ 11/27(土)21:59

[hr]
=結果=

投稿数 10件(6人)

1位 (50B)
a5ua さん
a;main(b){printf("%d\n",a);a+=b;a>>20||main(a-b);}

2位 (51B)
五反田 さん
main(i,j){~j&printf("%d\n",j*=j>0)^7&&main(i+j,i);}

ideyan さん
b=1;main(a){printf("%d\n",b=a-b);a%557&&main(a+b);}

*1位1番乗り
a5ua さん

[hr]
★解説

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

if の代わりに &&||
&&|| 演算子は、最初に左辺を評価(実行)して、
その後の評価が必要なくなる( &&だと false、 || だと true) と、
右辺を評価しないことが保証されています。この特性を利用して、if 文を省略することができます。

アルゴリズムが肝心
今回の問題は main 関数の再帰を利用することで、コードのサイズを減らすことができました。
また、1位のコードは複雑なビット操作を用いず、単純な形にまとめられています。
中間発表で、もし自分のコードのサイズが1位と大きくかけ離れていたら、
器用なビット演算を極めるよりも、コードを根本から見直すことを考えれば、道が開けるのかもしれません。

興味が出てきたら、コミュニティ「Code Golf を楽しもう」まで!
初心者歓迎、参戦&観戦いつでもお待ちしています!
http://dixq.net/forum/viewforum.php?f=52

第8回の投稿受付中です。

[hr]
コミュメンバーからの出題企画について(構想中)

そろそろメンバーからの出題をオープンにしたいなと。

#まず、僕の考え
① 週1回の出題ペースはこのままに
 →頻繁すぎると、1題当たりの参加者が少なくなるので
② 問題作成専門のメンバーが出るのもあり
 →いろんなメンバーに活躍のチャンスを
③ 僕も Code Golf に参戦してみたい
 →ちょっと重要

#どういう風に出題を募集するか
A.メンバーが出題トピへ、自由に問題を投稿する
 →① と相容れない
B.成績上位者にポイントを付与して、一定ポイントがたまると、そのポイントを消費して出題できる
 →② ができない。ポイント制にすると競争を意識してしまう。まったりやりましょう( ´・ω・)つ旦
C.問題案をPMでコミュ主に送り、採用されたら出題
 →③ が(ry

うーむ、どうしましょうね。アイデアを募集&思索していきたいです。
でも、メンバーからの出題企画をいち早くやってみたい気持ちもあるので、とりあえず
「第8回の成績上位3人が、1人1つ出題を担当できる」
という企画を実施することにしました。出題方法等の詳細は結果発表のときに。
どうぞ奮ってご参加ください!
.
最後に編集したユーザー あーる@Reputeless on 2010年11月27日(土) 22:04 [ 編集 2 回目 ]

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

Re: 第7回 mixC++ Code Golf 結果報告

投稿記事 by xxx » 14年前

Oh...なにやってるのかさっぱりわからないソースだ・・・
やっぱり上位のソースは華がありますね(笑)

出題者に関しては上位はほぼ偏ってしまうと思うのですこし変えたほうがかも・・・

// 私の順位教えてくれるととてもうれしいなー

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

Re: 第7回 mixC++ Code Golf 結果報告

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

うーん、残念。1位逃しましたね。

それにしても、a5ua さん、ideyanさんのコードはすごい。
1グローバル変数、1main引数の組み合わせはいろいろ考えてみたんですが思いつかなかったんですよね。

a5uaさんのと自分のを組み合わせれば49Bになりますね。

CODE:

a;main(b){printf("%d\n",a)&~a^7&&main(a-b,a+=b);}
(2進数を眺めまくっていた甲斐がありました。)

アバター
ideyan
記事: 2
登録日時: 15年前

Re: 第7回 mixC++ Code Golf 結果報告

投稿記事 by ideyan » 14年前

ぐはー、自信あったのになぁ。
残念無念。
b=a-bをどうにかできないかと思ったんだけど
逆の思考でなんとかなったのかー。

第0項なしなら
b;main(a){printf("%d\n",b=a-b);b%20&&main(a+b);}
これで48Byteいけたんですけどね。

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

Re: 第7回 mixC++ Code Golf 結果報告

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

> roxion1377 さん
こんなコードが意味のある数列を生み出すなんて、、プログラミングは奥が深い。

#出題者について
出題者を上位者から選ぶのは、今回だけの措置にしたいと思っております。
②にも書いた通り、解くのは苦手でも、問題作成で活躍できるメンバーがいてもいいと思いますので!

今回は、なにせ初めての出題企画です。いろいろ混乱が起こるのを防ぐため、
出題者はコミュへの参加歴や実力等を考慮したいと考え、このような方法にいたしました。ご理解ください。

#順位について
第1回より、上位者以外の順位は発表しておりませんが、希望があればPMでも、コメントでもお伝えします。
roxion1377 さんは、2位の2人に次いで、掲載まであと1歩の4位でした!


> 五反田 さん
惜しかったです。中間発表後に伏兵あり。
結果発表後の検討も、Code Golf の醍醐味ですのう。

CODE:

~a^
が顔にしか見えません。


> ideyan さん
愛媛からご苦労様です。
今回は第0項がご厄介かけました(笑)
これは見た目もきれいですね。
最後に編集したユーザー あーる@Reputeless on 2010年11月27日(土) 22:44 [ 編集 1 回目 ]

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

Re: 第7回 mixC++ Code Golf 結果報告

投稿記事 by a5ua » 14年前

やったー初1位GET
終了判定が三者三様って感じですかね。
特に五反田さんのコードはパッと見だとなにやってるかわからない;;

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

Re: 第7回 mixC++ Code Golf 結果報告

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

> a5ua さん
おめでとうございます!
今回は、特に意味の無い値の終了判定だったので、意地悪問題だったかも・・・
みんなが僕の想像以上に考えてくださってて、感動しました (╹◡╹*

アバター
沖 滉均
記事: 237
登録日時: 14年前

Re: 第7回 mixC++ Code Golf 結果報告

投稿記事 by 沖 滉均 » 14年前

うーん、どのコードを見ても難解だorz
というか、五反田さんがa5uaさんとのコードを合わせてっていうのがすぐに思い浮かぶのもすごい
次回はちょっと仕事の状況次第で参加すらできないかも;

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

Re: 第7回 mixC++ Code Golf 結果報告

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

> 沖 滉均 さん
僕もそう思いました。
毎週やってますから、どうぞお時間のある時にご参加くださいませ。