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