式木、二項演算、括弧のネスト処理 の変更点

Unity学習帳2冊目式木、二項演算、括弧のネスト処理 の変更点
« Prev  
9: 2016-08-04 (木) 01:03:53 osinko ソース 現: 2016-08-04 (木) 11:20:26 osinko ソース
Line 126: Line 126:
           //Nodeクラスのルートと左右の葉に適切にデーターを収納する            //Nodeクラスのルートと左右の葉に適切にデーターを収納する
           //左右の葉では、それぞれ解析実行して再帰処理し文字列の式を分解していく            //左右の葉では、それぞれ解析実行して再帰処理し文字列の式を分解していく
 + 
           // left-hand side            // left-hand side
           Left = new Node(RemoveBracket(this.Expression.Substring(0, posOperator)));            Left = new Node(RemoveBracket(this.Expression.Substring(0, posOperator)));
Line 323: Line 323:
&ref(tree2.png); &ref(tree2.png);
-この要領で式木を生成すればいい。式木の末端程、計算優先順位は高くなるのでcalculate時は末端から計算する+この要領で式木を生成すればいい。式木の末端程、計算優先順位は高くなるのでcalculate時は末端からトラバースして計算する
**式木から数式のパターンを眺めてみる [#bafcc66b] **式木から数式のパターンを眺めてみる [#bafcc66b]
Line 340: Line 340:
の \(3!=3\times 2\times 1=6\) パターンで全てを網羅する事ができる。そこで、この式木を実際に組んで性質をまとめてみる。まず、以下の約束事を定義する の \(3!=3\times 2\times 1=6\) パターンで全てを網羅する事ができる。そこで、この式木を実際に組んで性質をまとめてみる。まず、以下の約束事を定義する
-\(\bullet =\left\{ \times ,\div ,+,- \right\} \\ \overline { \bullet  } =\left\{ \times ,\div  \right\} \\ \underline { \bullet  } =\left\{ +,- \right\} \)+\(①,②,③=\left\{ \times ,\div ,+,- \right\} \\ \overline { ① } ,\overline { ② } ,\overline { ③ } =\left\{ \times ,\div  \right\} \\ \underline { ① } ,\underline { ② } ,\underline { ③ } =\left\{ +,- \right\} \)
-ここで使用している「\(\bullet \)」マークは匿名の二項結合演算子(この場合①~③)を表している。記号に上線があるものは優先順位の高い演算子の集合「×÷」。下線のあるものは優先順位の低い演算子の「+-」。マークのみは「×÷+-」の集合になっている。このルールに従い式木から数式を見ると以下のような分類が可能となる+//\(\bullet =\left\{ \times ,\div ,+,- \right\} \\ \overline { \bullet  } =\left\{ \times ,\div  \right\} \\ \underline { \bullet  } =\left\{ +,- \right\} \) 
 + 
 +//ここで使用している「\(\bullet \)」マークは匿名の二項結合演算子(この場合①~③)を表している。記号に上線があるものは優先順位の高い演算子の集合「×÷」。下線のあるものは優先順位の低い演算子の「+-」。マークのみは「×÷+-」の集合になっている。このルールに従い式木から数式を見ると以下のような分類が可能となる 
 + 
 +二項結合演算子(この場合①~③で「×÷+-」の集合)に上線があるものは優先順位の高い演算子の集合「×÷」。下線のあるものは優先順位の低い演算子の「+-」の集合になっている。このルールに従い式木から数式を見ると以下のような分類が可能となる
***式木123のパターン [#n73fa719] ***式木123のパターン [#n73fa719]
Line 367: Line 371:
\(a\overline { ① } b\overline { ② } c\overline { ③ } d\quad \Leftrightarrow \quad a\times b\times c\times d\quad \Leftrightarrow \quad 123のパターン\\ a\underline { ① } b\overline { ② } c\overline { ③ } d\quad \Leftrightarrow \quad a+b\times c\times d\quad \Leftrightarrow \quad 132のパターン\\ a\underline { ① } b\overline { ② } c\underline { ③ } d\quad \Leftrightarrow \quad a+b\times c+d\quad \Leftrightarrow \quad 312のパターン\\ a\overline { ① } b\overline { ② } c\underline { ③ } d\quad \Leftrightarrow \quad a\times b\times c+d\quad \Leftrightarrow \quad 321のパターン\\ a\overline { ① } b\underline { ② } c\underline { ③ } d\quad \Leftrightarrow \quad a\times b+c+d\quad \Leftrightarrow \quad 321のパターン\\ a\underline { ① } b\underline { ② } c\underline { ③ } d\quad \Leftrightarrow \quad a+b+c+d\quad \Leftrightarrow \quad 321のパターン\\ a\underline { ① } b\underline { ② } c\overline { ③ } d\quad \Leftrightarrow \quad a+b+c\times d\quad \Leftrightarrow \quad 亜種のパターン\\ a\overline { ① } b\underline { ② } c\overline { ③ } d\quad \Leftrightarrow \quad a\times b+c\times d\quad \Leftrightarrow \quad 亜種のパターン\) \(a\overline { ① } b\overline { ② } c\overline { ③ } d\quad \Leftrightarrow \quad a\times b\times c\times d\quad \Leftrightarrow \quad 123のパターン\\ a\underline { ① } b\overline { ② } c\overline { ③ } d\quad \Leftrightarrow \quad a+b\times c\times d\quad \Leftrightarrow \quad 132のパターン\\ a\underline { ① } b\overline { ② } c\underline { ③ } d\quad \Leftrightarrow \quad a+b\times c+d\quad \Leftrightarrow \quad 312のパターン\\ a\overline { ① } b\overline { ② } c\underline { ③ } d\quad \Leftrightarrow \quad a\times b\times c+d\quad \Leftrightarrow \quad 321のパターン\\ a\overline { ① } b\underline { ② } c\underline { ③ } d\quad \Leftrightarrow \quad a\times b+c+d\quad \Leftrightarrow \quad 321のパターン\\ a\underline { ① } b\underline { ② } c\underline { ③ } d\quad \Leftrightarrow \quad a+b+c+d\quad \Leftrightarrow \quad 321のパターン\\ a\underline { ① } b\underline { ② } c\overline { ③ } d\quad \Leftrightarrow \quad a+b+c\times d\quad \Leftrightarrow \quad 亜種のパターン\\ a\overline { ① } b\underline { ② } c\overline { ③ } d\quad \Leftrightarrow \quad a\times b+c\times d\quad \Leftrightarrow \quad 亜種のパターン\)
-***結論 [#h0fc7fad]+***中間まとめ [#h0fc7fad]
&font(150%){以上の事から式木の5パターンで4項の括弧を含めた四則演算の優先順位が網羅できることが確認できる&br;}; &font(150%){以上の事から式木の5パターンで4項の括弧を含めた四則演算の優先順位が網羅できることが確認できる&br;};
-この考えが正しいかどうか。まずブルートフォースの形式で力技で率直にアプローチしたコードと、5パターンにまでシンプル化した式木を利用したコードのふたつで検証を行い、どちらの答えも同一であれば、まず間違いはないだろうとする。では、コーディングを始める+この考えが正しいかどうか。まずブルートフォースの形式で力技で率直にアプローチしたコードと、5パターンにまでシンプル化した式木を利用したコードのふたつで検証を行い、どちらの答えも同一であれば、まず間違いはないだろうと考える。コーディングはまだ早い。もう少し考えを進めてみる 
 + 
 +**群(group)の理論で、式木の置換処理を考える [#c9f619a3] 
 + 
 +資料:[[群 (数学):https://ja.wikipedia.org/wiki/%E7%BE%A4_(%E6%95%B0%E5%AD%A6)]] 
 +数学における「群」とは「似ているものをひっくるめる」理論といえる。似ているもの同士がどこが似ているかを人に説明するのは難しい。その対象が抽象的な物であればある程難しいものだと考えられる。
« Prev  


トップ   差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom