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 に答える