サイログ。

~雑多な記事置き場~

第30回Ruby/Rails勉強会に参加しました

石川さんのとか、Yuguiさんのとかは、多分他の方がレポートしていただけることでしょう(ヲイ)

というわけで、初級者レッスン。

逆ポーランド記法の計算機にぞっこん。

というわけで、回答。中途半端にゴルフ(笑)

def rpn(e)
	c = e.pop
	case(c)
	when'+';return rpn(e)+rpn(e)
	when'-';return rpn(e)-rpn(e)
	when'*';return rpn(e)*rpn(e)
	when'/';return rpn(e)/rpn(e)
	else   ;return c.to_i
	end
end
def main;puts rpn(ARGV);end
if __FILE__ == $0;main;end

ちなみに、コレをちょこっと変えると、ポーランド記法の計算機になります。

def rpn(e);return rpn2(e.reverse);end
def rpn2(e)
	c = e.pop
	case(c)
	when'+';return rpn2(e)+rpn2(e)
	when'-';return rpn2(e)-rpn2(e)
	when'*';return rpn2(e)*rpn2(e)
	when'/';return rpn2(e)/rpn2(e)
	else   ;return c.to_i
	end
end
def main;puts rpn(ARGV);end
if __FILE__ == $0;main;end