第6回 mixC Code Golf 結果報告

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

第6回 mixC Code Golf 結果報告

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

#第6回 [Multiplication table]#

[問題]
九九を表示する
各段ごとに改行し、数値間に1~2個の半角空白をいれ整形する

[出力]
https://sites.google.com/site/mixcgolf/Q6.txt

[期間]
11/13(土)10:00 ~ 11/20(土)21:59

--------------------------------------------------------------
=結果=

投稿数 15件(6人)

1位 (60B)
五反田 さん
j;main(i){for(;9/i;i+=!(j%=9))printf("%3d%c",++j*i,10|j<8);}

ideyan さん
main(i){for(;i<91;)printf(i++%10?"%3d":"\n",i%10*(i/10+1));}

3位 (63B)

沖 滉均 さん
main(i){for(;i<91;printf(i++%10?"%3d":"\n",i%10*((i+10)/10)));}

*1位1番乗り
五反田 さん

--------------------------------------------------------------
★解説

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

多重ループを一つにできないか検討する
参考として、今回投稿されたコードより(64B)
i;main(j){for(;i++<9;puts(""))for(j=0;j<9;printf("%3d",i*++j));}
ループを1つにまとめるのがいつも効果的とは言えませんが、今回の問題では4Bも稼ぐことができました。

数式を短いものに置き換える
a*(b%c) は b%c*a、 (a+b)/b は a/b+1 と、
単純な式でも、変形によって ( ) を減らせることがあります。

printf に余分な引数があっても大丈夫
たとえば printf(i%2?"%d":"\n",1,2,3); のように、
書式化文字列内の変換指定子 %* の数より多い引数があっても動作します。

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

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

-
最後に編集したユーザー あーる@Reputeless on 2010年11月25日(木) 18:24 [ 編集 2 回目 ]

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

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

投稿記事 by xxx » 14年前

60Bが2人も・・・
ループ1つでやるとコードが長くなっていた俺ってorz

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

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

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

> roxion1377 さん
2人とも違うコードってのが面白いですね (╹◡╹*

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

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

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

i%10*((i+10)/10)))
↑これをひたすら短くしようと苦戦してたけど発想が追いつかなかったorz

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

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

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

> 沖 滉均 さん
これは惜しい・・・
僕は最初 ((i+10)/10)*(i%10) なんてやってたんですよ (ノД`)

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

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

投稿記事 by ideyan » 14年前

うわぁ……
なんか五反田さんのコード格好いいなぁ。
よくそんなのが思いつきますね~。

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

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

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

> ideyan さん
こんなコードが出てくるとは思わなんだw
僕は for 継続条件式 の 9/i が気に入りました。

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

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

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

>ideyanさん
かっこいいなんて言ってもらえるとは思ってませんでした。ありがとうございます。

>あーるさん
自分もその部分は気に入りました。
i<10を何とかして縮められないかと頭を捻った結果です。

今回は参加者が少し増えたようですね。
これからが楽しみです。

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

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

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

> 五反田 さん
参加者増やしたいなぁ。
そのためには初心者にもわかりやすくて面白い問題がないと…
βに移ったら、このコミュの当初予定通り、みんなからの出題募集も始めてみます。

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

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

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

よくよく解説読んでたら自分のコードの無駄がよくわかりました…
上のを短くするのは、中学数学レベルの問題で解決できましたねorz
そこの発想があればideyanさんと微妙に異なる形にできたわけか…

CODE:

main(i){for(;i<91;printf(i++%10?"%3d":"\n",i%10*(i/10+1)));}

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

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

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

> 沖 滉均 さん
うむう、惜しかったですなぁ