接頭表記で、コマンドラインからプロセス引数に最も効率的な方法

StackOverflow https://stackoverflow.com/questions/1991672

質問

私たちの宿題は、表現に応じて、ワードリストのサブセットを計算する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は、それらを必要としませんが、明示的なリターンを入れてきました。

他のヒント

スタックを使用してください。最大サイズは、引数の数になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top