ruby編。pythonよりスパッと解けているのは問題をより把握したため。
eval使うバージョン
s = "ab[cd]ef"
s = "ab[c[d]][e]f"
#expected = ['a', 'b', ['c', 'd' ], 'e', 'f']
s = s.gsub(/([\]a-z])/, '\1,')
s = s.gsub(/([a-z])/, '"\1"')
s = s.gsub(/,\]/, ']')
#puts s
p eval('[' + s +']')
eval使わないバージョン
s = "ab[cd]ef"
expected = ['a', 'b', ['c', 'd' ], 'e', 'f']
def parse(xs)
result = []
while not xs.empty?
x = xs[0]
xs.slice!(0, 1)
if x == '['
got = parse(xs)
result.push(got)
elsif x == ']'
return result
else
result.push(x)
end
end
return result
end
p parse("[][]")
p parse(s)
0 件のコメント:
コメントを投稿