【问题标题】:Finding six-digit palindrome number. Works for four and five digits查找六位回文数。适用于四位数和五位数
【发布时间】:2015-11-18 02:35:01
【问题描述】:

我必须找到回文数,它们是三位数字的乘积。我制作的程序适用于 2*2 和 3*2。但不适用于 3*3。为什么?我想不通。

#initialized variables

x = 999             
y = 999


 while x > 100

    while y > 100

        num = x*y

        #Reversing the digits

        a = num/100000
        b = num%100000
        c = b/10000
        d = b%10000
        e = d/1000
        f = d%1000
        g = f/100
        h = f%100
        i = h/10
        j = h%10
        rev = 100000*j+10000*i+1000*g+100*e+10*c+a

        #Checking for palindrome

        if rev == num
            puts num
        end
        y -= 1

    end
    x -= 1  

end

【问题讨论】:

    标签: ruby palindrome


    【解决方案1】:

    x 的每次迭代之后,您不会将 y 重置为 999,因此您的程序实际上并没有按预期迭代整个值范围。将y = 999 撞到while x > 100 下方。

    【讨论】:

    • @Pr4njal 如果您认为我已经解决了您的问题,请接受我的回答,谢谢!
    • 这一行我错过了...这让我沮丧了两天...谢谢你..
    【解决方案2】:

    嗯,您的代码非常简单,只是您要反转数字。

    我推荐两个步骤来解决这个问题:

    1. 将反向部分提取到一个单独的函数中并编写一堆单元测试以确保它按照您的想法执行。我的直觉是它不是。
    2. 如果这不能解决问题,请开始为整个事情编写测试。实际上,无论如何您都应该这样做。

    【讨论】:

      猜你喜欢
      • 2019-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-24
      • 2017-07-11
      • 1970-01-01
      • 2012-08-11
      • 1970-01-01
      相关资源
      最近更新 更多