s = Array.new
s << 19
while (s.last + 19) < 100000 do
s << s.last + 19
end
这^工作。 s是19以下100,000的所有因子的数组。
我试图在一个简洁的陈述中找到s中的所有数字,其中该数字的反转也在数组中。例如:176和671。
reflections= s.select { |num| num.to_s.reverse == s.each.to_s }
我知道这是错误的,但我如何针对整个阵列检查每个反转的项目?
答案 0 :(得分: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]
答案 1 :(得分:2)
reflections = s & s.map{|num| num.to_s.reverse.to_i}
答案 2 :(得分: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
将包含数组s
中反向的所有数字。