1Ωの抵抗10個で黄金比の値に近づける(Ruby)

問題:

1Ω の抵抗 10個を使い、合成抵抗が黄金比 1.6180339887..Ωにもっとも近づく場合の値を、少数第10位まで求めよ。

 
aΩ と bΩ の抵抗をつなげる場合、直列つなぎにすれば合成抵抗はたんに a + b Ω になりますが、並列つなぎの場合はそれらの逆数の和の逆数、つまり
  
になるのが重要なところです。抵抗10個できわめて複雑な組み合わせをつくることができます。

Ruby で求めてみました。

require 'set'

def product(a, b)
  @ar[a].each do |i|
    @ar[b].each do |j|
      @ar[a + b] << i + j
      @ar[a + b] << (i * j) / (i + j)
    end
  end
end


@ar = Array.new(11) {Set.new}
@ar[1] << Rational(1, 1)
for i in 2..10
  for j in 1..(i / 2)
    product(j, i - j)
  end
end

ans = 10
@ar[10].each do |x|
  ans = x if (x - 1.6180339887).abs < (ans - 1.6180339887).abs
end
puts "%.10f" % ans.to_f
puts ans

答えは 1.6181818182 となります。分数だと 89/55 ですね。
ちなみに、模範解答よりもずっとシンプルなコードだと思います。

さて、これがどのような回路なのかですが、それも求めるとなるとさらに手を入れないといけないですね。だいぶ複雑になりそうです。