Project EulerをRubyで書いている

Project EulerRubyで解いているんだけど、Problem55で初めて自分としては良い出来のコードが書けたので自慢しようと思う。

 

class Integer
  def reverse
    self.to_s.reverse.to_i
  end

  def palindrome?
    self == self.reverse
  end

  def lychrel?
    myself = self

    (1..50).all? do |i|
      !(myself += myself.reverse).palindrome?
    end
  end
end

puts (1..9999).select { |i| i.lychrel? }.size

配列のall?やany?メソッドは、これまで書いていた方法と比べるとスキッと書けるから使っていて楽しい。人に「好きなメソッドは?」と聞かれたら、all?とany?と答えることにしよう!!
それとワンライナーではないけど、私はメソッドを数珠繋ぎにしがちだった。人のWebでのRubyコードが適切にメソッド分けしていたので真似したら、これまたスキッと書けたので驚いた。「returnが必要ない」の意味が少しつかめたかもしれない。