2015-11-18 40 views
0

我必须找到三位数字的产品的回文数字。我制作的程序适用于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 

回答

1

你不是x每次迭代之后重新y到999,所以你的程序实际上没有遍历整个取值范围内按预期。将y = 999撞到while x > 100之下。

+0

@ Pr4njal如果您觉得我解决了您的问题,请接受我的回答,谢谢! –

+0

我错过了这一行......它使我感到沮丧两天...感谢你.. – Pr4njal

0

那么,你的代码是非常简单的,除非你正在颠倒数字。

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

  1. 提取反向部分到一个单独的功能和写一堆的单元测试,以确保它在做什么,你认为它是。我的直觉是,事实并非如此。
  2. 如果这样不能解决问题,请开始为整个事情编写测试。其实,无论如何你都应该这样做。