#第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位のコードサイズを日記にて報告します。
コミュの運営などについてご意見がありましたら、お気軽にメッセージかトピへ書き込んでください。
-
第4回 mixC Code Golf 結果報告
- あーる@Reputeless
- 記事: 84
- 登録日時: 15年前
- 住所: 千葉
第4回 mixC Code Golf 結果報告
最後に編集したユーザー あーる@Reputeless on 2010年11月05日(金) 22:02 [ 編集 1 回目 ]
Re: 第4回 mixC Code Golf 結果報告
ぐはっ、28Byteだった。。。
1位のコード見事ですねぇ。
文字数の違いでなんとかならないかとは考えたんですが
具体的なコードまでは思いつきませんでしたorz
次も頑張るぞ~
1位のコード見事ですねぇ。
文字数の違いでなんとかならないかとは考えたんですが
具体的なコードまでは思いつきませんでしたorz
次も頑張るぞ~
- あーる@Reputeless
- 記事: 84
- 登録日時: 15年前
- 住所: 千葉
Re: 第4回 mixC Code Golf 結果報告
> ideyan さん
いつも参加ありがとうございます。
僕も問題を作るときに解答を考えてはいるのですが、この1位のコードは予想していませんでした。
ちなみに僕のも 28B
main(){printf(getchar()%3);}
いつも参加ありがとうございます。
僕も問題を作るときに解答を考えてはいるのですが、この1位のコードは予想していませんでした。
ちなみに僕のも 28B
main(){printf(getchar()%3);}
Re: 第4回 mixC Code Golf 結果報告
文字数の判定で合ってたのか
最初の文字の判定とは思いつかなかった・・・^^;
みんなのコード参考になるなぁ
最初の文字の判定とは思いつかなかった・・・^^;
みんなのコード参考になるなぁ
- あーる@Reputeless
- 記事: 84
- 登録日時: 15年前
- 住所: 千葉
Re: 第4回 mixC Code Golf 結果報告
> roxion1377 さん
みなさんの解答を見てると発想力が養われます(´ω`*
あと、第5回にして初めての単独首位おめです!
みなさんの解答を見てると発想力が養われます(´ω`*
あと、第5回にして初めての単独首位おめです!
Re: 第4回 mixC Code Golf 結果報告
>>みけCATさん
試してみたんですが、残念ながらideoneの環境では、最適化のせいかその方法ではruntime errorは起きなかったんですよね。
試してみたんですが、残念ながらideoneの環境では、最適化のせいかその方法ではruntime errorは起きなかったんですよね。