class Integer
Public Instance Methods
next_palindrome(integer = nil)
click to toggle source
# File lib/palindromic/integer.rb, line 2 def next_palindrome(integer = nil) integer ||= self number_as_string = integer.to_s half = number_as_string.length / 2.0 palindrome_split = {} palindrome_split[:beginning] = number_as_string[0..half.floor - 1] increment = 1.1 * 10 ** (number_as_string.length / 2) if half % 1 != 0 palindrome_split[:middle] = number_as_string[half.floor] increment = 10 ** (number_as_string.length / 2) else palindrome_split[:middle] = '' end palindrome = Integer(palindrome_split[:beginning] + palindrome_split[:middle] + palindrome_split[:beginning].reverse) if palindrome > integer next_palindrome = palindrome elsif palindrome_split[:middle] != '9' next_palindrome = palindrome + increment else increment = 10 ** ((number_as_string.length / 2) + 1) rounded_up = ((integer / increment) + 1) * increment next_palindrome = next_palindrome(rounded_up) end return next_palindrome.to_i end
palindrome?()
click to toggle source
# File lib/palindromic/integer.rb, line 33 def palindrome? self.to_s == self.to_s.reverse end