Hatena::Groupbkc

はこべにっき@bkc RSSフィード

2008-11-28

算数にチャレンジ!

| 02:25 | 算数にチャレンジ! - はこべにっき@bkc を含むブックマーク はてなブックマーク - 算数にチャレンジ! - はこべにっき@bkc 算数にチャレンジ! - はこべにっき@bkc のブックマークコメント

この問題で

とかで解かれてる問題ですが,うちは以下のようにやった.

class Array
  def reject_with_index!
    self.each_with_index do |e, i|
      self [i] = nil if yield(e, i)
    end
    self.compact!
    self
  end
end

nums = (1..512).to_a
rule = 1
while nums.size > 1 do
  nums.reject_with_index! {|e, i|  (i+1) % 2 == rule}
  rule = -rule + 1
end
p nums

て,y_tsudaのコードみてて気づいたけどindexとかいう都合のいいメソッドがあるのか! なんでindexを使うと

nums = (1..512).to_a
rule = 1
while nums.size > 1 do
  nums.reject! {|e|  (nums.index(e)+1) % 2 == rule}
  rule = -rule + 1
end
p nums

とかかけてかなりスッキリしたー

y_tsuday_tsuda2008/11/30 20:57まぁ、そんな感じの実装になるわなー。