接頭表記で、コマンドラインからプロセス引数に最も効率的な方法
-
22-09-2019 - |
質問
私たちの宿題は、表現に応じて、ワードリストのサブセットを計算するRubyスクリプトを書くことです。
通常のバイナリ操作です。
&& And operator
|| Or operator
++ Concatenate operator
! Negation operator
は有効な呼び出しは次のようになります。
./eval.rb wordlist && a c
or
./eval.rb wordlist && || a b c
最初の呼び出し手段は、少なくとも一つの「」と「C」すべての単語を持って新しい単語リストを生成します。 私の質問ので、どのように私はefficent方法でされた引数を処理しますか?たぶんrecursiv? 私がこだわっている...
事前に感謝します。
解決
プレフィックス表記と文法のように見えます。スタックは確かにあなたの友人であり、使用する最も簡単なスタックは、コールスタックです。たとえば、この文法を与えます:
expression ::= number | operand number number
operand ::= '+' | '-'
これは、それを評価するためのコードがあります:
#!/usr/bin/ruby1.8
@tokens = ['*', 2, '+', 3, 4]
def evaluate
token = @tokens.shift # Remove first token from @tokens
case token
when '*'
return evaluate * evaluate
when '+'
return evaluate + evaluate
else
return token
end
end
puts evaluate # => 14
これはRubyのですが、は、それが擬似コードに十分に近いです。私はそれがRubyのを知らない誰かに明確かもしれないのでRubyは、それらを必要としませんが、明示的なリターンを入れてきました。
他のヒント
スタックを使用してください。最大サイズは、引数の数になります。
所属していません StackOverflow