2016年7月31日日曜日

160731(2)

Ruby


デュードニーの問題

http://japla.sakura.ne.jp/workshop/workshop/2012/primar_2.pdf
に載っていた問題。

1から9まで一つずつ使って
abc * de = fg * hi
となるもののうち、その積が最大となるものを求めよ
という問題である。

1917年に発表されたものの、1971年まで正しい解が求まらなかったらしい。
しかし、プログラミングで求めれば一瞬である。

ary = []
(1..9).to_a.permutation{|a|
  i = a[0] * 100 + a[1] * 10 + a[2]
  j = a[3] * 10 + a[4]
  k = a[5] * 10 + a[6]
  l = a[7] * 10 + a[8]
  ary << i * j if i * j == k * l
}
p ary.uniq.sort

出力結果
[3634, 3726, 3886, 4002, 4234, 4662, 5022, 5056, 5568, 7008, 7448]

0 件のコメント:

コメントを投稿