restofwaterimpのぎじゅつMemo

SIerに所属。企画から運用まで幅広くやってます。C#中心に書いてます。

メモ:文字列の部分分割とeval(数学パズルQ2)

今回のお題を実施するのには数値もしくは文字列の間に四則演算を入れなければならなかった。

 

そのため、自分は「部分参照とか文字列分割だね」と思い、

 

Ruby

 hoge[n,m] ・・・ nには開始位置(0開始)、mには終了位置を指定する

 

C#

 hoge.substring(n,m)・・・nには開始位置(0開始)、mには長さをしていする

 

として、取得した値をもとに四則演算を用いて書いていた。

 

しかし、いろいろな四則演算のパターンを書くのはすっきりしないなとと思い、ページをめくったら、evalを利用していた。

 

C#でやろうとすると自前でevalを作成するか、他のスクリプト言語(例えば、JavaScript)を利用するのも一つ手らしい。

 

書籍には逆ポーランド記法を利用するとも載っていた。

結構なソースコード量になると思われる・・・ので、作成しやすい言語で今は考える元しようと思う。。。

 

また、eval利用するとコンパイラを通してや、IDEを通じて、エラーチェックや警告が走らないのが欠点。

頭の体操?にはよさそうだが、実際にものを作成するときには慎重に利用することが必要に感じた。

文字列を実行時に処理するだけなので、人間系で事前に処理の正しさ(仕様と違うか、セキュリティ的に文字解析の結果が大丈夫か)が必要ですね。