Озадаченный проблемой палиндромного продукта

Я изучал Ruby, поэтому я решил попробовать свои силы в некоторых из головоломок проекта Эйлера. Смущающе, я только добрался до проблемы 4 ...

Задача 4 выглядит следующим образом:

Палиндромное число читается одинаково в обоих направлениях. Самый большой палиндром, полученный из произведения двух двузначных чисел, равен 9009 = 91 × 99.

Найдите самый большой палиндром из двух трехзначных чисел.

Итак, я решил, что я бы зациклился с 999 до 100 во вложенном цикле for и выполнил тест для палиндрома, а затем вырвался из циклов, когда нашел первый (который должен быть самым большим):

final=nil
range = 100...1000
for a in range.to_a.reverse do
  for b in range.to_a.reverse do
    c=a*b
    final=c if c.to_s == c.to_s.reverse
    break if !final.nil?
  end
  break if !final.nil?
end
puts final

Это выдает палиндром 580085, но, очевидно, это не самое высокое произведение двух трехзначных чисел в пределах диапазона. Как ни странно, тот же код успешно возвращает 9009, как в примере, если я изменю диапазон на 10 ... 100.

Может кто-нибудь сказать мне, где я иду не так?Кроме того, есть ли лучший способ вырваться из внутреннего цикла?

Спасибо

Ответы на вопрос(13)

Ваш ответ на вопрос