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

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

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

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

#第15回[Multiple choice]#

[問題]
入力された記号のマークシートを # で塗りつぶす
選択肢は 0-9,a-d の14個、無効な選択肢は入力されない
マークミスにご注意を!

[入力 |例1]
7

[出力 |例1]
 _  _  _  _  _  _  _  _  _  _  _  _  _  _ \n
| || || || || || || ||#|| || || || || || |\n
|0||1||2||3||4||5||6||#||8||9||a||b||c||d|\n
|_||_||_||_||_||_||_||#||_||_||_||_||_||_|\n
[入力 |例2]
c

[出力 |例2]
 _  _  _  _  _  _  _  _  _  _  _  _  _  _ \n
| || || || || || || || || || || || ||#|| |\n
|0||1||2||3||4||5||6||7||8||9||a||b||#||d|\n
|_||_||_||_||_||_||_||_||_||_||_||_||#||_|\n
[期間]
1/15(土)22:00 ~ 1/22(土)21:59

[hr]
=結果=

投稿数36件(8人)

1位 (118B)
五反田 さん
j,c;main(i){putchar(i?~i%3?j?124:32:j?c%39*3-25-i?j-2?352/j*3:i/30*39+i/3+48:35:95:10+j++*gets(&c))>>j&&main(++i%43);}

2位 (119B)
zentR さん
c=4;main(i,n){for(scanf("%x",&n);c--;puts(""))for(i=-1;i++<13;printf(c-3?i-n?c-1?c?"| |":"|_|":"|%x|":"|#|":" _ ",i));}

3位 (123B)
bitter_fox さん
c,q;main(i){for(scanf("%x",&i);q<4;c++)printf(&" _ \0| |\0|%x|\0|_|\0|#|\0\n"[c-14?q?i-c?q-3?q*4:13:17:0:!++q?:21],c%=15);}

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

[hr]
★解説

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

文字を作る
1位のコードは1文字ずつ分岐を使って表示させています。
putchar(352/j*3)
は、j が 1 か 3 かによって、char にキャストされたあとの引数が ' ' ==32 と '_' ==95 に分かれる巧妙な処理です。

%x は scanf でも使える
scanf や printf で %x を使えば、0-9 以降の a,b,c,d を、数字と同じように扱うことができます。

ループカウントを最適なものにする
2位のコードでは、ループカウントに使う変数を、演算コストが少なくなる値で初期化しています。

複数の文字列は1つにまとめられる
3位のコードでは、一組のダブルクオーテーション ” ” の中に、\0 で区切った複数の文字列を格納しています。


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

第16回の投稿受付中です。
[hr]
メモ

期末テストが終わったら・・・
・OOJの導入に向けていろいろ。
・2月の出題募集企画。
・結果報告トピの書式の統一作業。
・期間終了後に記録更新されたコードを載せたい。
・再投稿の場合、何回目の投稿かを書いてもらうようにしよう Q1-30B(2)
・第20回には何かしよう。

.
最後に編集したユーザー あーる@Reputeless on 2011年1月22日(土) 22:02 [ 編集 1 回目 ]

アバター
みけCAT
記事: 6734
登録日時: 14年前

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

投稿記事 by みけCAT » 14年前

最近調子悪いな...
次こそはがんばろう。

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

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

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

> みけCAT さん
まぁ、問題の相性もありますからね (╹◡╹*
どうぞ次も!

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

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

投稿記事 by xxx » 14年前

読む気にならないソースたち
変態が増えてきましたね

今週の問題が難しい・・・

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

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

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

> roxion1377 さん
昨日の午後までは zentR さんのシンプルなコードが暫定1位で、ほっとしていたのですが、
最後の最後でやられてしまいました (ノД`

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

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

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

何だかもっと複雑怪奇なものが出来上がってくるのかと思いましたが、シンプルにやっても結構いけたようですね。
%xは思い浮かばなかったなぁ。

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

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

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

> 五反田 さん
zentR さんのコードは シンプル・イズ・ベストの鑑 になると思ったのに、、、ベストじゃなかったなんて (╹◡╹;;;

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

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

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

CODE:

c,i;main(n){for(gets(&n);c>あーるさん
自分のコードもベストではなかったようです。
112Bです。
実行結果
http://ideone.com/SeE6r

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

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

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

> 五反田 さん
恒例のw 大幅カットですね。ということで
>・期間終了後に記録更新されたコードを載せたい。
を真剣に考えないといけませぬ(´ω`*