通过 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
我在 ruby 中遇到了关于回文的挑战。
实际上我看了太多资源,我想我的大脑融化了,因为我是一个新手程序员。
让我总结一下问题:
所以从用户那里我们得到起始值结束值,深度value.We取起始值并检查数字是否是回文,如果不是'然后我们将其 reversed 添加到 itself( 20, reverse(20)=02, add , 22) 并检查我们找到的数字是否a palindrome.If 不是我们把计算出来的数字加上它的 reversed 到 本身 。但我们只能这样做 "depth"值次。 如果我们通过这些计算找到回文,则打印值 ----> xxxx 如果不是,则打印值 ----> 特殊数字。
我能够找到回文,通过给定和结尾 value.But 我只是无法实现深度 thing.My 问题看起来很像
编辑:我们这样做就像 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