找到六位数的回文数。适用于四位和五位数

时间:2015-11-18 02:35:01

标签: ruby palindrome

我必须找到回文数字,它是三位数字的乘积。我制作的节目适用于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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

嗯,你的代码非常简单,除非你正在反转数字。

我建议两个步骤来解决这个问题:

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