るびまゴルフ 【第 2 回】

書いた人:浜地慎一郎

はじめに

この連載ではゴルフについて扱います。ゴルフと言っても本当のゴルフではなく、コードを短く書くことを競うコードゴルフです。ゴルフについて詳しくは以下をご参照下さい。

簡単な問題を出題して、次回でその解答を解説しつつまた出題、というサイクルで進めて行きます。解けた人はトラックバックなどしていただければ存在がアピールできるかもしれません。コードを縮めても特にいいことはありませんが、ちょっとしたパズルとして楽しんでいただけたら良いなと思います。

解答と解説

前回の問題は a*(b+c) という式を縮めろ、というものでした。解答は

a.*b+c

です。 Ruby の二項演算子は同名のメソッド呼び出しのシンタクスシュガーですので、通常のメソッドのように . をつけても呼び出せます。それを使えば実行の優先順位を無理矢理変えてやることができ、それによって空白や括弧がいらなくなる場合は 1Byte 削れる、ということでこうなっています。

今回の問題のように、丸括弧を消すことによって少し縮む場合が結構あります。「丸括弧はゴルファーの敵」と頭に叩き込んでおいて下さい。

簡単な問題だけあって、トラックバック頂いた方々をはじめ、あちらこちらの日記などで見た解答は全て正解でした。反応ありがとうございました。

問題

-2000 から -10000 の数字を 10 おきに改行つきで出力するコードを書いて下さい。文章で書いても不明確ですが、下記のコードと完全に同じ出力が出れば OK です。

-2000.step(-10000,-10) do |v|
  puts v
end

今回からパーを設定してみることにしました。今回のパーは 27Byte です。 27Byte 付近を目標に縮めてみてください。

著者について

浜地慎一郎。ゴルフ場を経営しています。

バックナンバー

トラックバック

トラックバックの受付は終了しました(2008/3/31)。