FizzBuzz
流行のFizzBuzzやってみました。私のベストスコアは84↓です
main(i){for(;i<101;i++)printf("%s%s%.d\n",i%3?"":"Fizz",i%5?"":"Buzz",i%3*i%5?i:0);}
Webで調べつつやったけど^^;これ以上縮まらない(´・ω・`)。ポイントは
- includeなんかしない
- if文の代わりに三項演算子
- for文でブロックのための中括弧は使わない
- argcが1になるのを利用。変数名はi。変数の宣言と初期化を省く
- 倍数の判定に==を使わない(次に「i%3<1」ってやってたけど、それもやめた)
- 「15の倍数の場合に"FizzBuzz"とする」を明示的に書かない
- "Fizz","Buzz"系の文字列を出力するときと、数値を出力するときでprintf()を分けない(%.dがミソ)
よくわからないのですが、さらに短くするためには・・・
- "Fizz"と"Buzz"の"zz"を共通化する?
- printfを使わない?
- 数値を表示するための条件を簡素化する?
- "%s%s"を簡素化する?
- for文を使わない?
- bit演算を活用する?
- asciiコードを活用する?
という方向性があるのかなぁ。。。世界記録は73バイト。大きな発想の転換が要るのか、はたまた地道な作業が要るのか、超テクニカルな技が要るのか。。。
| 固定リンク
この記事へのコメントは終了しました。


コメント