Озадаченный проблемой палиндромного продукта
Я изучал 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.
Может кто-нибудь сказать мне, где я иду не так?Кроме того, есть ли лучший способ вырваться из внутреннего цикла?Спасибо