相关疑难解决方法(0)

对回文产品问题感到困惑

我一直在学习Ruby,所以我想我会尝试一些项目的Euler难题.令人尴尬的是,我只是解决了问题4 ......

问题4如下:

回文数字两种方式相同.由两个2位数字的乘积制成的最大回文是9009 = 91×99.

找到由两个3位数字的乘积制成的最大回文.

所以我想我会在一个嵌套的for循环中从999循环到100并对回文进行测试,然后当我找到第一个(应该是最大的一个)时突破循环:

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
Run Code Online (Sandbox Code Playgroud)

这确实输出了回文580085,但显然这不是该范围内两个三位数字的最高乘积.奇怪的是,如果我将范围更改为10 ... 100,则相同的代码成功返回9009,就像在示例中一样.

  • 谁能告诉我哪里出错了?
  • 还有,有一种更好的方法可以打破内部循环吗?

谢谢

ruby puzzle math palindrome

5
推荐指数
2
解决办法
3012
查看次数

标签 统计

math ×1

palindrome ×1

puzzle ×1

ruby ×1