紫だちたる雲の細くたなびきたる blog

春はあけぼの(をかし)

見事に泥沼にハマる

やばいなぁ。今週に入ってから全然進んでないなぁ。いくつかあるテキストボックスの内どれかが更新されたら、あらかじめ設定された計算式を実行して答えをだすっていうプログラム。答えが出たテキストボックスがさらに他のテキストボックスの計算式を更新しなければならなかったりすると、更新の順序を考慮しないと正しい値にならない事がある。
最初は単純にテキストボックスが更新されたイベントを拾って計算式にかけていたのだが、順序の問題でうまく動かない。
困った時のデザインパターンとばかりにObserverパターンを適用してみる。更新元のテキストボックスのクラスに答えのテキストボックスを登録、更新されたら答えのテキストボックスの値を更新してやる。なんとかなりそう、だが、これだと1+2×3みたいな計算ができない。本来なら7となるべきが(1+2)*3=9となってしまう。
うーん。どうしよう。ネットを調べてみる。逆ポーランド記法!これだ!逆ポーランドの順序にテキストボックスの値と演算子を並べ(スタックに格納)、順に計算させればよさそう。ってことは、演算式を解析して逆ポーランド記法の順に並び替えなければならないということ。え〜!?そんなん面倒臭い〜。幸いアルゴリズムはネットですぐ見つかった。
後は実装あるのみ。しっかし、iアプリにそんな複雑なアルゴリズム載せてメモリ足りるんかいな?CPUのスピードの問題もあるし(^^;
とりあえず明日コーディングしてみるべし。だめだったらマジでやばい状況に(^^ゞ