/ 最近 .rdf 追記 編集 設定 本棚

脳log[20071220] るびまゴルフ 【第 2 回】



2007年12月20日 (木)

[Ruby] るびまゴルフ 【第 2 回】

 問題

以下のコードと同じ出力をより短いコードで得よ。(パーは 27バイト)

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

 答案

n=1990;801.times{p -n+=10}

-1 (26バイト)だからバーディーかな。アルバトロス(-3)が上限とは限らないけど。数値リテラルが冗長な気がするけど他の表現が思いつかない。文字コード(?X)を使おうと思ったけどできなかった。

 やってみたこと

  • 省ける空白を省く
  • do〜end を {〜} に
  • puts を pに
  • 三カ所の -(マイナス)を一カ所に

 失敗したこと

  • ブロック変数名を $\(レコードセパレータ)にして、printを無引数で呼ぶ。(.step{|$\\|print}。$\に数字を代入できなくて失敗。なら文字列に対して uptoを呼べばいいんだけど文字列リテラルにするために引用符で +2バイト使っちゃ無駄が多いし、そもそもお題を満たせないし、泥縄)
  • (irb限定で) 変数_を使ったインチキ。

 できなかったこと (他人の答えを見て)

  • 三カ所の 0(十)を一カ所に (思いつかなかった)
  • Shift_JISの文字コードを利用 (できなかった)