学校の「ウォームアップ テスト」として、逆ポーランド記法計算機を作成しています。私はほとんどそれを釘付けにしました。私が遭遇している問題は、これを自分で実行すると、返された整数だけが表示されることです(これは望ましいことです)。これを学校の RSpec チェッカーにプラグインすると、データが配列で返されるため、正しくないというフラグが立てられます。
修正するために、最後に queue.each ステートメントを作成しました。いくつかの異なる位置でこれを試しましたが、問題ではないようです。評価が回答を返すときに、配列形式から回答を抽出するためのより大きな概念はありますか?
class RPNCalculator
def evaluate(string)
holding = []
queue = []
string = string.split(" ").to_a #jam string into an array - break on spaces
string.each do |x|
if x.match(/\d/) #number checker. if true throw it in queue.
queue << x.to_i #convert to number from string
elsif x.match(/\+/) #math operator checker
holding << queue[-2] + queue[-1] #grab queue's last 2 & replace w/ result
queue.pop(2)
queue << holding[-1]
elsif x.match(/\-/)
holding << queue[-2] - queue[-1]
queue.pop(2)
queue << holding[-1]
elsif x.match(/\*/)
holding << queue[-2] * queue[-1]
queue.pop(2)
queue << holding[-1]
else
end
end
return queue.each { |x| puts x.to_i} # by [-1] in string, queue holds answer
end
end
お時間をいただきありがとうございます。