Perlクイズ de Ruby
2004-04-24
勉強を兼ねて、結城さんの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クイズの解答編を見ると、みなさんスマートな答えを出されている。 さすがだなぁ。