ツバサの備忘録

主に備忘録代わりに精進記録を載せていくつもりです。

AOJ 1155 - 如何に汝を満足せしめむ? いざ数え上げむ…

問題
提出コード1
提出コード2

解法

構文解析です。
変数がP,Q,Rの3種類しかないので、それぞれについて、値が0,1,2だったパターンの3^{3} = 27通りを調べればよいです。
構文解析の処理を1つの関数にまとめて再帰をしている方法が提出コード1、それぞれの役割に分担して行っているのが2です。
とりあえず普段の方法が提出コード1のパターンだったのでそちらを書き、バグりにくい方法をしらべたところこのような記事が見つかったのでこちらも練習で書いてみました。が、構文解析らしいバグではなく、別の部分でバグを発生させ、1時間以上溶かしました…
基本的にはどちらのコードも、文字列を前から見ていって、文字ごとの処理をガリガリ実装していけばいいです。やはり、構文解析といえば、現在見ている位置関係のバグが発生しやすいので、そこに注意しながら書きます。演算の処理も、おとなしく言われた通り実装するしかないです。

感想

本番は、どっちで書くか悩み中です…が、実際、機能ごとに関数が分かれている方が見やすいといえば見やすいので、しばらくは提出コード2の方で練習してみようかなと思います。