1を作る問題

答えは

第1項は3/4、後ろ2項は通分して足すと17/68 = 1/4。
Javascriptで解こうと思ったけど技量不足でできず
(順列のリストが作れなかった)、
数学ツールの使えるPythonで解いた。
コードはこんな感じ。


import itertools         ←数学モジュール呼び出し

list = [1,2,3,4,5,6,7,8,9]      ←使う数字のリスト

p = itertools.permutations(list, 9)  ←順番を入れ替えた順列のリスト

for v in p:             ←全ての順列について計算
  (a,b,c,d,e,f,g,h,i) = v
  k = a/(10*b+c)+d/(10*e+f)+g/(10*h+i)
  if k == 1:            ←答えが1だったらその順列を出力
    print(v)

出力はこんな感じ。分数の順番が変わるだけで、基本は一緒。
=====
(5, 3, 4, 7, 6, 8, 9, 1, 2)
(5, 3, 4, 9, 1, 2, 7, 6, 8)
(7, 6, 8, 5, 3, 4, 9, 1, 2)
(7, 6, 8, 9, 1, 2, 5, 3, 4)
(9, 1, 2, 5, 3, 4, 7, 6, 8)
(9, 1, 2, 7, 6, 8, 5, 3, 4)
=====

前のページへ


プログラミング練習部屋へ