Perlクイズ de Ruby
勉強を兼ねて、結城さんのPerlクイズにRubyで挑戦。 選んだのは、カッコの対応を調べる問題。 元の問題に加えて、複数のカッコの種類に対応できるようにした。
def balanced?(str) lsym = "<[{(" rsym = ">]})" stack = [] str.each_byte do |char| char = char.chr if lsym.include?(char) stack.push(char) elsif rsym.include?(char) top = stack.pop return 0 unless top return 0 if rsym.index(char) != lsym.index(top) end end stack.empty? ? 1 : 0 end
かなりストレートな解法になってしまった。 Perlクイズの解答編を見ると、みなさんスマートな答えを出されている。 さすがだなぁ。