Ruby 初心者スレッド Part 22at TECH
Ruby 初心者スレッド Part 22 - 暇つぶし2ch746:デフォルトの名無しさん
08/10/29 05:37:23
MATCH関数もどき。 返値は0を起点とする点が異なる。
直近値検索方法は>>677と同じ。

def match_liner(val, array) # >>677と同等
 array[0...-1].each_index do |i|
  if val <= array[i+1]
   return val-array[i] <= array[i+1]-val ? i : i+1
  end
 end
 array.size - 1
end

def match_recursive(val, array)
 case array.size
 when 0
  nil
 when 1
  0
 when 2
  val-array[0] <= array[1]-val ? 0 : 1
 else # ↑↓ 不等号に注意のこと
  i = array.size / 2
  val < array[i] ?
   match_recursive(val,array[0..i]) : match_recursive(val,array[i..-1]) + i
 end
end


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch