問題タブ [rpn]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - AST (または RPN) に分配法則を適用 => 選言正規形
以下のような表現があります。
許可される演算子は OR と AND で、括弧を使用して式をネストできます。PHP 5.3 で実装された Shunting Yard アルゴリズムを使用して、この文字列をトークン化し、抽象構文木 (AST) に変換することができました。上記の式の結果は次のようになります。
このツリーをトラバースするとき、ユーザーが選択できる数値の最終的な組み合わせを出力したいと考えています。与えられた表現では、これは不可能です。私が必要とするのは、実際には分配法則が適用された後のフォームです。
&-operator ノードとして許可されているノードは、リーフを運ぶ最後のノードだけであると結論付けました。他のすべては |-operator ノードでなければなりません。
上記で説明した文法を使用して任意の AST を、すべての最終順列を表すものに変換する方法は? 中置表現のトークンに分配法則を適用する方がよいでしょうか? ツリーの代わりに RPN 表現を使用する方が簡単ですか?
また、次のようなより難しい例があることにも注意してください。
結果として欲しいのは:
別の (より複雑な) 例として、左側のサブツリーと右側のサブツリーを切り替えるか、別の &-node を 1003 => 1003 1009 & の代わりに追加します。
私がすでに試したこと: 何度もグーグル検索し、ツリーの前後の順序をトラバースし、成功しなかったアルゴリズムを見つけようとしました。
正しい方向へのヒントや指針に感謝します。
c - 構造体の初期化中のアクセス違反
私は RPN 電卓のコードを作成しました。基本的な演算子 (+、*、/、^) だけでなく、浮動小数点数と負数でも問題なく動作します。また、 (x^2 + x*4/-2) : 1 -> 5 :0.5 のような式も評価します (x は 1 から 5 まで、0.5 のステップで評価されます)。
char スタックを使用しました。
ここで、cos(x)、tan(x) などの関数のサポートを追加したいと考えています。その目的を達成するには、解析後に sin、cos、sqrt などの単語を格納するchar* スタックを構築する必要があります。
問題は、スタックを初期化するときに、「アクセス違反: アドレス 0x01 の書き込み」エラーが発生することです。
正確な理由はわかりません。malloc() の使用でしょうか?
これらは、スタックを使用するための関数です。
ruby - アイテムが配列にある場合、Rubyは整数のみを返します
学校の「ウォームアップ テスト」として、逆ポーランド記法計算機を作成しています。私はほとんどそれを釘付けにしました。私が遭遇している問題は、これを自分で実行すると、返された整数だけが表示されることです(これは望ましいことです)。これを学校の RSpec チェッカーにプラグインすると、データが配列で返されるため、正しくないというフラグが立てられます。
修正するために、最後に queue.each ステートメントを作成しました。いくつかの異なる位置でこれを試しましたが、問題ではないようです。評価が回答を返すときに、配列形式から回答を抽出するためのより大きな概念はありますか?
お時間をいただきありがとうございます。
c - ヘッダー付きの RPN、なぜ機能しないのですか?
RPN を実行しましたが、結果と手順が表示されません。前に表示されていました。何が起こっているのか理解できず、コンパイラによってスローされたエラーもありません。
私はいつもこの例を行います:
3.2 1.8 - 10 / 2 + .
4 ステップ = 2.14
何が悪いのか本当にわかりません...
c - C の逆ポーランド記法
コードの実装に助けが必要です。これが C のコードです。私の課題は、逆ポーランド記法用のプログラムを作成することです。これが私がこれまでに持っているものです。私がすぐに持っているエラーの1つは、「コントロールが非無効関数の終わりに達する可能性がある」です。エラーの後、そこからどこへ行くべきかわかりません。どんな助けでも大いに役立ちます。