2015-11-18 78 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. 如果這樣不能解決問題,請開始爲整個事情編寫測試。其實,無論如何你都應該這樣做。