最有效的方式来处理参数从前缀符号的命令行
-
22-09-2019 - |
题
我们的作业是写一个红宝石脚本谁计算取决于表达单词表的一个子集
标准二进制操作
&& And operator
|| Or operator
++ Concatenate operator
! Negation operator
一个有效呼叫会像
./eval.rb wordlist && a c
or
./eval.rb wordlist && || a b c
首先呼叫的装置产生一个新的单词表,其所有字具有至少一个“一”和“c”。 所以我的问题是我如何处理在efficent方式arguemnts?也许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
虽然这是红宝石,它足够接近伪代码。我已经把明确的回报,虽然红宝石并不需要它们,因为它可能会更清楚的人谁不知道红宝石。
其他提示
使用的叠层。最大尺寸将参数的数目。
不隶属于 StackOverflow