case文を使ったあれこれ

標準入力から「文字列,数値」を取得して出力

・www,数値
「www」を数値回繰り返す
結果:wwwwwwwww

・HogeFuga,数値
数値が3で割れるときはHoge、5で割り切れるときはFuga、15で割り切れるときはHogeFuga、それ以外は数値

・Sosu,数値
数値番目の素数

・fib,数値
数値番目のフィボナッチ数

require 'prime'
require 'matrix'
a=STDIN.gets.split(",")
i=a[1].to_i
case a[0]
when x="www"
    puts x*i
when (x="Hoge")+(y="Fuga")
    s=""
    s += x if i%3==0
    s += y if i%5==0
    s =a[1] if s==""
    puts s
when "Sosu"
    puts Prime.each.take(i).last
when "fib"
    puts ((Matrix[[1,1], [1,0]] ** i) * Vector[1,0])[1]
end

条件式に代入を使っているのでコードが短くてRubyが好きなところ。

FizzBuzz的なところはもっと短くできるはず・・・

素数はもっと字数を少なくできるか?しらんけど

フィボナッチは、これ以上の短縮のアイデアは出てこない。