2016年1月28日木曜日

160128

Ruby


誤っているようで誤っていない数式

Excel VBA でパズルを解こう プログラムで脳トレに挑戦
という本に次のような問題が載っていた。

(1) / (2) + (3) / (4) - (5) / (6)
= ((1) + (3) - (5)) / ((2) + (4) - (6))
(ただし、(1) ~ (6) は1~9までの異なる六つの数字)

例えば、
7 / 4 + 6 / 8 - 3 / 2 = (7 + 6 - 3) / (4 + 8 - 2)
が条件を満たす。

条件を満たす[(1), (2), (3), (4), (5), (6)] をすべて出力してみた。

# -*- coding: cp932 -*-

ary = []
(1..9).to_a.permutation(6){|p|
  if p[1] + p[3] - p[5] != 0
    ary << p if p[0].to_r / p[1] + p[2].to_r / p[3] - p[4].to_r / p[5] == (p[0] + p[2] - p[4]).to_r / (p[1] + p[3] - p[5])
  end
}
p ary
puts "#{ary.size}通りある。"

出力結果
[[1, 2, 3, 6, 5, 4], [1, 2, 3, 6, 7, 4], [1, 2, 3, 6, 8, 4], [1, 2, 3, 6, 9, 4], [1, 2, 4, 8, 3, 5], [1, 2, 4, 8, 3, 6], [1, 2, 4, 8, 6, 5], [1, 2, 4, 8, 7, 5], [1, 2, 4, 8, 9, 5], [1, 2, 5, 3, 7, 6], [1, 3, 4, 8, 5, 6], [1, 4, 2, 8, 3, 6], [1, 4, 2, 8, 5, 6], [1, 4, 2, 8, 7, 6], [1, 4, 2, 8, 9, 6], [1, 4, 3, 2, 6, 8], [1, 6, 3, 9, 4, 8], [2, 1, 4, 8, 9, 3], [2, 1, 6, 9, 8, 3], [2, 1, 8, 4, 6, 3], [2, 3, 4, 8, 1, 6], [2, 4, 3, 6, 1, 5], [2, 4, 3, 6, 7, 5], [2, 4, 3, 6, 8, 5], [2, 4, 3, 6, 9, 5], [2, 4, 3, 9, 5, 6], [2, 8, 1, 4, 3, 6], [2, 8, 1, 4, 5, 6], [2, 8, 1, 4, 7, 6], [2, 8, 1, 4, 9, 6], [3, 1, 4, 8, 7, 2], [3, 1, 6, 4, 9, 2], [3, 1, 9, 6, 7, 2], [3, 2, 1, 4, 6, 8], [3, 2, 6, 8, 9, 4], [3, 2, 6, 9, 4, 8], [3, 2, 9, 6, 1, 4], [3, 2, 9, 6, 5, 4], [3, 2, 9, 6, 7, 4], [3, 2, 9, 6, 8, 4], [3, 6, 1, 2, 5, 4], [3, 6, 1, 2, 7, 4], [3, 6, 1, 2, 8, 4], [3, 6, 1, 2, 9, 4], [3, 6, 2, 4, 1, 5], [3, 6, 2, 4, 7, 5], [3, 6, 2, 4, 8, 5], [3, 6, 2, 4, 9, 5], [3, 6, 4, 8, 1, 2], [3, 6, 4, 8, 1, 7], [3, 6, 4, 8, 2, 7], [3, 6, 4, 8, 5, 7], [3, 6, 4, 8, 9, 7], [3, 9, 1, 6, 4, 8], [3, 9, 2, 4, 5, 6], [4, 2, 8, 6, 7, 3], [4, 8, 1, 2, 3, 5], [4, 8, 1, 2, 3, 6], [4, 8, 1, 2, 6, 5], [4, 8, 1, 2, 7, 5], [4, 8, 1, 2, 9, 5], [4, 8, 1, 3, 5, 6], [4, 8, 2, 1, 9, 3], [4, 8, 2, 3, 1, 6], [4, 8, 3, 1, 7, 2], [4, 8, 3, 6, 1, 2], [4, 8, 3, 6, 1, 7], [4, 8, 3, 6, 2, 7], [4, 8, 3, 6, 5, 7], [4, 8, 3, 6, 9, 7], [4, 8, 5, 2, 9, 3], [4, 8, 5, 3, 6, 9], [5, 2, 4, 8, 9, 3], [5, 3, 1, 2, 7, 6], [5, 3, 4, 8, 6, 9], [6, 3, 8, 4, 2, 1], [6, 4, 3, 1, 9, 2], [6, 4, 7, 2, 3, 1], [6, 4, 7, 3, 2, 1], [6, 4, 9, 3, 5, 2], [6, 8, 3, 2, 9, 4], [6, 8, 7, 4, 3, 2], [6, 9, 2, 1, 8, 3], [6, 9, 3, 2, 4, 8], [6, 9, 7, 3, 2, 1], [6, 9, 7, 3, 2, 8], [7, 2, 6, 4, 3, 1], [7, 3, 6, 4, 2, 1], [7, 3, 6, 9, 2, 1], [7, 3, 6, 9, 2, 8], [7, 4, 6, 8, 3, 2], [8, 4, 2, 1, 6, 3], [8, 4, 6, 3, 2, 1], [8, 6, 4, 2, 7, 3], [9, 3, 6, 4, 5, 2], [9, 6, 3, 1, 7, 2], [9, 6, 3, 2, 1, 4], [9, 6, 3, 2, 5, 4], [9, 6, 3, 2, 7, 4], [9, 6, 3, 2, 8, 4]]
100通りある。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。