Rosetta Code
Lychrel numbers
Check sample numbers for palindrome formation under 200 rounds of the reverse-and-add process, where sums grow far past 64 bits.
Source
rosettacode/popular/lychrel_numbers.vibe
# title: Lychrel numbers
# source: https://rosettacode.org/wiki/Lychrel_numbers
# category: Rosetta Code
# difficulty: Intro
# summary: Check sample numbers for palindrome formation under 200 rounds of the reverse-and-add process, where sums grow far past 64 bits.
# tags: popular, numbers, iteration, palindromes, bignum
# vibe: 0.4
def palindrome?(number)
text = number.to_s
text == text.reverse
end
def reverse_number(number)
reversed = 0
current = number
while current > 0
reversed = (reversed * 10) + (current % 10)
current = current / 10
end
reversed
end
def lychrel_candidate?(number, limit)
current = number
iteration = 0
while iteration < limit
current = current + reverse_number(current)
if palindrome?(current)
return false
end
iteration = iteration + 1
end
true
end
def run
[
{ value: 56, lychrel_candidate: lychrel_candidate?(56, 200) },
{ value: 57, lychrel_candidate: lychrel_candidate?(57, 200) },
{ value: 196, lychrel_candidate: lychrel_candidate?(196, 200) }
]
end
Output
Press run to execute run from this example.