9つの数字(3)                             戻る

 いま、1から9までの9つの数字が順番に並んでいる。

       

数字の順番を変えずに全て用いて、計算結果がちょうど90になるように、途中に演算記号
(×が4個、÷が1個)を入れたい。どうしたらよいだろうか?




























(答) 次のようにすればよい。 : 1÷234×5×6×78×9=90

  このパズルを考えるとき、 78×3=234 という美しい事実に気がついた。これを利
 用すると上式は直ぐに思いつくことだろう。

  また、このような計算は、表計算ソフト Excel にやらせた方が早い。

 下記は拙い解の探求プログラム(ExcelのVBA)であるが、興味ある方はコピーして試し
てみてください。プログラムは、しらみつぶしに計算させるもので、およそ上品とは言えない。
それでも、3秒ほどで全パターンが網羅できるので、実用上は十分であろう。

Sub 9つの数字()
Dim a, b, c, d, e, f, g, h As Integer
Dim s As String
Dim a1(3), a2(3), a3(3), a4(3), a5(3), a6(3), a7(3), a8(3)
  a1(1) = "": a1(2) = "*": a1(3) = "/"
  a2(1) = "": a2(2) = "*": a2(3) = "/"
  a3(1) = "": a3(2) = "*": a3(3) = "/"
  a4(1) = "": a4(2) = "*": a4(3) = "/"
  a5(1) = "": a5(2) = "*": a5(3) = "/"
  a6(1) = "": a6(2) = "*": a6(3) = "/"
  a7(1) = "": a7(2) = "*": a7(3) = "/"
  a8(1) = "": a8(2) = "*": a8(3) = "/"
Range("c1") = Now
Range("a1").Select
 For a = 1 To 3
  For b = 1 To 3
   For c = 1 To 3
    For d = 1 To 3
     For e = 1 To 3
      For f = 1 To 3
       For g = 1 To 3
        For h = 1 To 3
         With ActiveCell.Select
         s = "=" & "1" & a1(a) & "2" & a2(b) & "3" & a3(c) & "4" & a4(d) & "5" _
           & a5(e) & "6" & a6(f) & "7" & a7(g) & "8" & a8(h) & "9"
         ActiveCell.Formula = s
         .Offset(1, 0).Select
         End With
Next h, g, f, e, d, c, b, a
Range("c2") = Now
End Sub

 上記の問題では、演算記号(×が4個、÷が1個)を指定したが、VBAの演算結果から、
いろいろな計算パターンを得ることができる。

 答えが300までのうち、1つしか計算パターンがない例をいくつかあげておこう。

   1×234×5×6÷78÷9=10

   12×3÷4×56÷7×8÷9=64

   12×3÷4×5÷6×78÷9=65

   1×2÷3÷4×567×8÷9=84

   1×2÷3÷4×56÷7×8×9=96

   12÷3×4×567÷8÷9=126

   12÷3×4÷56×7×89=178

   1÷2×3÷4×56×78÷9=182

   1×2×3×456×7÷8÷9=266

   1÷2÷3×4×56×7÷8×9=294