Now, onto Problem 4.
A palindromic number reads the same both ways. The largest palindrome
made from the product of two 2-digit numbers is 9009 = 91 × 99.
Find the largest palindrome made from the product of two 3-digit numbers.
First the tests:
describe "largest palindrome" do
it "finds the largest palindrome of 2 digit numbers" do
expect(Problem4.answer(10...100)).to eq 9009
it "finds the largest palendrome of 3 digit numbers" do
expect(Problem4.answer(100...1000)).to eq 906609
Now for the solution code:
max = 0
(largest_palindrome_range).each do |a|
(a...largest_palindrome_range.end).each do |b|
product = a*b
max = [max, product].max if product.to_s == product.to_s.reverse
So, first, I thought about a palindrome. A palindrome is the reverse of itself. So, I took the range we were testing and took each number to get a and then did the same from a to the end of the range to get b. Then I multiplied all of the resulting 2 number possibilities. Finally, in order to find the maximum, you take the product, convert it to a string and then see if it equals the reverse of the string.
This one was really tough for me. I knew about how to find the max and I knew how to check if it was a palindrome and reversing the string, but the middle section of finding the products via the range given was pretty challenging for me to wrap my head around.
comments powered by Disqus