Class: Integer

Inherits:
Object
  • Object
show all
Defined in:
lib/palindromic/integer.rb

Instance Method Summary collapse

Instance Method Details

#next_palindrome(integer = nil) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 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?Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/palindromic/integer.rb', line 33

def palindrome?
    self.to_s == self.to_s.reverse
end