Code 2013 のコードゴルフに挑戦してみた
Code 2013 における JavaScript のコードゴルフが面白そうだったので挑戦してみました。 JavaScript でデジタル時計を表示するプログラムを短くするという問題です。
先にコードを出してる人よりも短くはできなかったのであんまり意味はないけどコードを載せておきます。
初期
最初の頃は 2 桁の数字を 1 つのデータで表現しようとしてました。
2 桁の数字から 1 桁ずつ値を取り出す処理を省ける分短くなるかなと思ってこうしていたのですが、実際のところは 2 桁の数字用のデータを生成する処理が長くなってしまって逆効果でしたね。 分と秒を分ける処理も面倒だと思っていたのでもともと秒と分を別個の変数で持たせたりしてました。
あと 「ブラウザの種類は問わない」 って書かれていたのでここぞとばかりに Arrow Function を使ってます *1。
インデントとか含めた状態で 434 バイト。
自力で到達した最後
で、結局 1 桁ずつ数字を書きだすように変更して、いろいろ書きかえていって、他の人のコードを見ずにたどり着いたのがこの状態です。
関数定義の function
とか return
とかに結構字数を取られてしまうので、関数定義は 1 つだけにしておいて引数で関数の挙動を変えるということをしてます。
除去できる改行と空白を除去して 283 バイト。
nanto さんのコードを見て改良
nanto さんのコードを見て、文字列に charCodeAt
メソッドを使って値を取り出すようにしたらバイト数減らせるのだなー、と思って改良しました。
- nanto さんのコード: 呼ばれていないけど、私もコードゴルフしてみました: Days on the Moon
除去できる空白や改行を除去して 263 バイト。
感想
コードゴルフ難しいってことだけはわかった!
— ねぷねぷ (@nobuoka) 2013, 8月 10
普段だったら絶対書かないようなコードを書くことになるので、普段のコーディング経験が邪魔になってしまうなーって思いました。 nanto さん 230 バイト切っててすごすぎます。
私は関数定義を 1 個だけ書くようにしてみたわけですが、他の人のコードを見ると eval
を使って関数定義をそもそも書かないようにしてたりして、なんていうか次元が違うなーと感じました。 怖い世界です。
- 作者: 桜澤麻衣,三浦佑之
- 出版社/メーカー: G.B.
- 発売日: 2007/07
- メディア: 単行本
- クリック: 3回
- この商品を含むブログ (3件) を見る