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.