at posts/single.html

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クイズの解答編を見ると、みなさんスマートな答えを出されている。 さすがだなぁ。

関連する日記