Я изучал Руби, поэтому я решил попробовать свои силы в некоторых из задач проекта Эйлера. Смущающе, я только добрался до задачи 4 ...
Задача 4 выглядит следующим образом:
Палиндромное число читается так же в обе стороны. Самый большой палиндром сделан из произведения двух 2-значных числа 9009 = 91 × 99.
Найдите самый большой палиндром из произведение двух 3-значных чисел.
Итак, я решил, что зациклился бы с 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.
Спасибо