× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
正月頃にCMでチラ見していた1,1,5,8で四則演算使って10を作る話です。
先日の仕事中(!)に、そういえばーと思って解いてみました。 た・だ・し! 正直、ああいうのを延々考えるのは性に合いません!(断言) そんなわけで、Excelマクロで解くプログラムを書き上げました。 20分ほどでプログラム書けたよ! 答えが出るのは一瞬だったよ! まぁ、試行回数を考えたら一瞬だよね! 1158の並び替え:4×3×2(重複あるので)÷2=12通り 四則演算子:4の三乗=64通り 計算優先の()を付けるパターン:()なし含めて6通り 試行回数:12×64×6=4608 ←楽勝! パズルとしての本来の目的からはかけ離れてるかもしれないけど、ほら、頭はちゃんと使ったよ! ついでなので、プログラムと回答を晒しておきます。 ①準備するもの…ExcelがインストールされてるPC ②Excelのシートに、以下のように1158の並び替えパターンを入力しておく。 ③ ②で入力したシートに、以下のようなマクロを記載。 Sub test() Dim intRow As Integer Dim A, B, C, D As Integer Dim i, k, m, n As Integer Dim strFormula As String Dim arrSan(1 To 4) arrSan(1) = "+" arrSan(2) = "-" arrSan(3) = "*" arrSan(4) = "/" intRow = 1 Do While Me.Cells(intRow, 1) <> "" A = Me.Cells(intRow, 1).Value B = Me.Cells(intRow, 2).Value C = Me.Cells(intRow, 3).Value D = Me.Cells(intRow, 4).Value For i = 1 To 4 For k = 1 To 4 For m = 1 To 4 For n = 1 To 6 Select Case n Case 1 strFormula = "=" & A & arrSan(i) & B & arrSan(k) & C & arrSan(m) & D Case 2 strFormula = "=(" & A & arrSan(i) & B & ")" & arrSan(k) & C & arrSan(m) & D Case 3 strFormula = "=" & A & arrSan(i) & B & arrSan(k) & "(" & C & arrSan(m) & D & ")" Case 4 strFormula = "=(" & A & arrSan(i) & B & ")" & arrSan(k) & "(" & C & arrSan(m) & D & ")" Case 5 strFormula = "=(" & A & arrSan(i) & B & arrSan(k) & C & ")" & arrSan(m) & D Case 6 strFormula = "=" & A & arrSan(i) & "(" & B & arrSan(k) & C & arrSan(m) & D & ")" End Select Me.Cells(1, 6).Formula = strFormula If Len(Me.Cells(1, 6).Text) = 2 Then If Me.Cells(1, 6).Value = 10 Then MsgBox strFormula End If End If Next Next Next Next intRow = intRow + 1 Loop End Sub ④上記のコードを実行する ※Excelでマクロを書く方法は適当に探してください。 面倒なのでプログラムにコメントもないし、解説するわけでもないですが、 1.計算式を総当たりで生成し、 2.F1セルに突っ込んで計算させ 3.それが10かどうかを確認する だけのシロモノです。 ちなみに解答は 8÷(1-1÷5) になりました。 PR |
カレンダー
ブログ内検索
|