月刊「理系への数学」数学パズルにトドメをさす?! 今月のFlash    おまけは→こちら
第6回
2010年 10月号
10を作れ!(その2)〜四則演算のパターンを洗い出す〜
式の構造を解析する

目的

四則演算のみからなる式を、標準化された構造に組み替えるプロセスを観察します。ここで、標準化された構造とは、加減演算子・乗除演算子という仮想的な多項演算子のみを用いた構造を指します。

加減演算子

[(□+□+…+□)-(□+□+…+□)]という形式(マイナス記号以下はなくてもよい)をとる多項演算子であり、□の中には数字単体か、乗除演算子で結ばれた項のみが入る。

乗除演算子

[(□×□×…×□)÷(□×□×…×□)]という形式(÷以下はなくてもよい)をとる多項演算子であり、□の中には数字単体か、加減演算子で結ばれた項のみが入る。

操作方法

Step1 式の入力

四則演算のみからなる式の数字の部分を□に置き換えたを、マウスで入力します。入力できる型は50文字以内です。入力時には、カッコのネスト等の形式が正しい状態が保たれるよう、入力できる文字のボタンのみがアクティブになります。

Step2 演算の優先順位の解析

入力された式の演算の優先順位を解析する過程を観察します。

・カッコの縮約

「□-((□-□))」のように、同じ範囲を囲むカッコが重複しているものを縮約します。

・乗除演算順の解析

乗算・除算演算子のみに着目し、カッコを用いて演算の優先順位を明示します。その際、全ての乗算・除算演算子は、それが結んだ2項を囲むカッコと対応づけられるようにします。乗算・除算演算子を先に処理することで、四則演算の優先順位のルールが守られます。

・加減演算順の解析

加算・減算演算子のみに着目し、カッコを用いて演算の優先順位を明示します。その際、全ての加算・減算演算子は、それが結んだ2項を囲むカッコと対応づけられるようにします。ここまでの処理の結果、全てのカッコのペアと全ての演算子は1対1に対応することになります。

Step3 式を標準化された構造に変換

式を加減演算子と乗除演算子のみからなる構造に変換する過程を観察します。この部分のアルゴリズムは、連載の先月号(2010年9月号/第5回)で説明しています。画面では、処理中の部分が一旦下のワークエリアに抜き出され(その際、元の式では抜き出した部分を★で示します)、その領域の最上位にある演算子を加減演算子または乗除演算子の一部とみなして構造が組み替えられた後に、元の式に戻されます。最終的に得られた式では、1つの加減演算子または乗除演算子が【】と対応しています。