0
s = Array.new 

s << 19 
while (s.last + 19) < 100000 do
  s << s.last + 19 
end

这^有效。s 是 100,000 以下 19 的所有因子的数组。
我试图在一个简洁的语句中找到 s 中的所有数字,其中该数字的倒数也在数组中。例如:176 和 671。

reflections= s.select { |num| num.to_s.reverse == s.each.to_s }

我知道这是错误的,但我如何检查整个数组中的每个反转项目?

4

3 回答 3

3

这应该有效:

reflections = s.select { |num| s.include?(num.to_s.reverse.to_i) }

虽然它产生了你可能没有预料到的结果

s = [176, 234, 671, 111]

reflections = s.select { |num| s.include?(num.to_s.reverse.to_i) }

reflections # => [176, 671, 111]

根据您的逻辑,这些都是有效的结果。

排除自我匹配非常简单:

s = [176, 234, 671, 111]

reflections = s.select do |x|
  x = x.to_s
  r = x.reverse
  (x != r) && s.include?(r.to_i)
end

reflections # => [176, 671]
于 2013-02-07T06:59:56.093 回答
2
reflections = s & s.map{|num| num.to_s.reverse.to_i}
于 2013-02-07T08:23:28.733 回答
0

尝试:

reverse_array = s.select {|num| num.to_s == num.to_s.reverse }

更新:

检查后我发现这会起作用:

myarr = ""
s = (1..1000)    
s.select{ |num| 

unless s.include?(num.to_s.reverse.to_i)   
   myarr << num.to_s
end

}  

最后,myarr将包含所有在 array 中出现反转的数字s

于 2013-02-07T07:20:10.387 回答