第4回 mixC Code Golf 結果報告

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

第4回 mixC Code Golf 結果報告

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

#第4回 [Trick or treat?]#

[問題]
標準入力が、"candy"(お菓子) か "nothing"(何もない)かを判断し、
後者の場合は実行時エラーを起こす

[入力|例1]
candy

[出力|例1]
(何もせず終了)
https://sites.google.com/site/mixcgolf/q4a1.png

[入力|例2]
nothing

[出力|例2]
(実行時エラー(runtime error))
https://sites.google.com/site/mixcgolf/q4a2.png

[期間]
10/30(土)0:00 ~ 11/5(金)21:59

                          
=結果=

投稿数 10件(4人)

1位 (26B)
roxion1377 さん

2位 (27B)
五反田 さん

*1位1番乗り
roxion1377 さん

*1位のコード
main(){char a[6];gets(a);}

*2位のコード
main(){getchar()%2?:div();}

                          
★解説

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

文字列の判別は少ないコストで
この問題で入力される文字列は "candy" か "nothing" のどちらかであることがわかっていました。なので、わざわざ各文字をチェックせずとも、全体の文字数や最初の文字だけを調べれば、どちらが入力されたのかを判断できます。
1位の方は「文字数」に、2位の方は「最初の文字」に着目したコードです。

実行時エラーを起こす方法
不正なメモリ領域にアクセスしたり、関数に適切な引数を与えなかったりすると、しばしば実行時エラーを引き起こします。
今回、後者の方法については div() が最短でした。

文字は数値
2位のコードでは getchar() で取得した最初の文字に % 演算をしています。
'c' は 99 なので条件演算子の省略された左辺を、
'n' は 110 なので右辺の div() を実行します。
文字と数値の対応を利用することは、文字列処理の問題では欠かせないテクニックです。
http://e-words.jp/p/r-ascii.html

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

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

                          
五反田さんからの提案で、第5回の問題から、結果の中間発表を行うことにしました。適当な頃合いに、その時点での1位のコードサイズを日記にて報告します。
コミュの運営などについてご意見がありましたら、お気軽にメッセージかトピへ書き込んでください。
-
最後に編集したユーザー あーる@Reputeless on 2010年11月05日(金) 22:02 [ 編集 1 回目 ]

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

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

投稿記事 by ideyan » 14年前

ぐはっ、28Byteだった。。。

1位のコード見事ですねぇ。
文字数の違いでなんとかならないかとは考えたんですが
具体的なコードまでは思いつきませんでしたorz
次も頑張るぞ~

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

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

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

> ideyan さん
いつも参加ありがとうございます。
僕も問題を作るときに解答を考えてはいるのですが、この1位のコードは予想していませんでした。
ちなみに僕のも 28B
main(){printf(getchar()%3);}

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

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

投稿記事 by xxx » 14年前

文字数の判定で合ってたのか
最初の文字の判定とは思いつかなかった・・・^^;
みんなのコード参考になるなぁ

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

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

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

> roxion1377 さん
みなさんの解答を見てると発想力が養われます(´ω`*
あと、第5回にして初めての単独首位おめです!

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

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

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

div()の代わりに1/0ではだめですか?

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

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

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

>>みけCATさん
試してみたんですが、残念ながらideoneの環境では、最適化のせいかその方法ではruntime errorは起きなかったんですよね。