通过 x 到 y 将其反转添加到自身来查找回文,仅进行深度计算

Finding palindromes by adding its reversed to itself through x to y doing only depth number of calculation

我在 ruby 中遇到了关于回文的挑战。

实际上我看了太多资源,我想我的大脑融化了,因为我是一个新手程序员。

让我总结一下问题:

所以从用户那里我们得到起始值结束值,深度value.We取起始值并检查数字是否是回文,如果不是'然后我们将其 reversed 添加到 itself( 20, reverse(20)=02, add , 22) 并检查我们找到的数字是否a palindrome.If 不是我们把计算出来的数字加上它的 reversed 本身 。但我们只能这样做 "depth"值次。 如果我们通过这些计算找到回文,则打印值 ----> xxxx 如果不​​是,则打印值 ----> 特殊数字。

我能够找到回文,通过给定和结尾 value.But 我只是无法实现深度 thing.My 问题看起来很像 但因为我是 ruby 新手,我无法理解 C 的意义 now.Any 帮助将不胜感激。

编辑:我们这样做就像 x 到 y,开始值到结束值,就像如果他们输入 20 作为开始值和 30 作为结束值,我们检查 20 是否是回文加上它的反转 etc.Once 我们检查完我们检查下一个数字,21 然后 22,23... 到 30。

def doit(n, max_tries)
  max_tries.times.each do
    rev = n.to_s.reverse.to_i 
    (n == rev) ? (return n) : n += rev
  end
  nil
end

doit(22,   1)   #=> 22

doit(21,   1)   #=> nil
doit(21,   2)   #=> 33

doit(137,  1)   #=> nil
doit(137,  2)   #=> 868

doit(1373, 2)   #=> nil 
doit(1373, 3)   #=> 9119

doit(13732,  9) #=> nil 
doit(13732, 10) #=> 134202431 

感谢@Cary Swoveland 的回答,我设法解决了我的问题:

def doit(n, max_tries)
  max_tries.times.each do
      print "#{n} "
      rev = n.to_s.reverse.to_i 
    (n == rev) ? (return n) : n += rev
  end
  nil
end

def revadd
  puts "Give me a starting integer"
  beginningvalue = gets.to_i
  puts "Give me a ending integer"
  endingvalue = gets.to_i
  puts "Give me a depth"
  depth = gets.to_i
    array = (beginningvalue..endingvalue-1).to_a
     for i in array
       if(doit(i,depth) != nil)
       puts ""
       print "#{i} ---> xxxx "
       puts ""
       else 
       puts ""
       print "#{i} ---> special number"
       puts ""
    end # end if
  end # end for
end # end def
revadd