毛のはえたようなもの

インターネット的なものをつらつらとかきつらねる。

Rubyはじめました/ふぃぼなち。

たのしいRuby 第2版 Rubyではじめる気軽なプログラミング

たのしいRuby 第2版 Rubyではじめる気軽なプログラミング

id:hayamizRubyPerlやったほうがいいといわれたのでRubyにしてみました。
選択にあまり意味はなく。とりあえず何かやる方針で。


とりあえずコマンドラインから引数を取ってフィボナッチ数を求めるプログラムを書いてみる。

number = ARGV[0].to_i

def fib(num)
  if num == 1 then
    return 1
  elsif num ==0 then
    return 0
  else
    return fib(num-1) + fib(num -2)
  end
end

puts fib(number)

5分ぐらい、か。途中でCompiz氏が死んだのでUbuntuさんを再起動してきます



//追記1:同日夕方
あの後ハチロク世代チャット&レスにて指摘いただいたので修正したものを下に。

def fib(num)
  if num == 1
    1
  elsif num ==0
    0
  else
     fib(num-1) + fib(num -2)
  end
end

number = ARGV[0].to_i
puts fib(number)

//追記2:同日深夜
id:ukstudio氏がもっと短い例を

def fib(num)
  case num
    when 1 : 1
    when 0 : 0
    else fib(num-1) + fib(num-2)
  end
end

number = ARGV[0].to_i
puts fib(number)

Rubyすごい(・ω・)


//追記3:3月2日
id:hogelog氏がもっともっと短い例を

def fib(n)
2>n&&n||fib(n-1)+fib(n-2)
end

にゃにょー


//追記4:3月3日
ちょっと変わったところでこんな例も。これは思いつかない

require ”matrix”
def fib(n)
(Matrix[[1,1],[1,0]]**n)[1,0]
end

もしかして有名なアルゴリズムなんだろうか。
と思って調べたらWikipediaに書いてござるよ。
これとっさに思いつかないのはダメだろうか。そうか。