2

では、次のような式があるとします。

((((e1) または (e2)) および (e3 または (e5 および e6)) および (e7)) または (e8))

式 (e1、e2、e3 など) のリストに and/or 演算子を続けて、リストを左から右に評価すると同じ論理ブール値の答えが得られるようにする必要があります。

つまり、e1 または e2 および e5 および e6 または e3 および e7 または e8 です。しかし、それは正しい答えではありませんが、それは私が最終的に必要とするものです.

再帰降下パーサーが式を評価することは知っていますが、それは私が必要としているものではなく、後で左から右に評価できる式のリストで終わる必要があります。

私はそれをバイナリツリーに入れてから、ツリーの接尾辞などをナビゲートすることを考えていましたが、それは正しくないようです。

私は以前はこのようなことを理解するのに十分頭が良かったのですが、今は赤ちゃんがいて、より高い認知能力をすべて失っています. ヘルプ?

4

2 に答える 2

3

まず、あなたが探しているのは、中置記法を後置記法に変換することです。

パーサーについての考えは正しい方向に進んでいます。実際、元の式を解析して(ただし、評価はしないで)、後置記法で出力する必要があります。

于 2010-01-26T14:50:18.927 に答える
1

(2人の子供がいるにもかかわらず)彼のほぼ無限の知性を持つ私の父は、かなり単純な解決策を指摘しています。したがって、すべてのAND式を同等のORに変換し、括弧を削除して、左から右に評価するだけです。私の場合、NOT操作は非常に高価であることを除いて、非常に実行可能なアイデアです。

于 2010-01-27T03:10:19.647 に答える