4 ms·
Are you talking about the interview script, or the programming script? And what if the interviewee brings out Lua and LPEG [1]: local lpeg = require "lpeg
by spc476 8y ago
Are you talking about the interview script, or the programming script? And what if the interviewee brings out Lua and LPEG [1]:
local lpeg = require "lpeg"
local balance = lpeg.Cmt(
lpeg.P {
(
(lpeg.P(1) - lpeg.S"()[]{}<>")
+ lpeg.P"(" * lpeg.V(1) * lpeg.P")"
+ lpeg.P"{" * lpeg.V(1) * lpeg.P"}"
+ lpeg.P"[" * lpeg.V(1) * lpeg.P"]"
+ lpeg.P"<" * lpeg.V(1) * lpeg.P">"
)^0
},
function(subject,position,capture)
return position,position > #subject
end
)
print(balance:match "") -- true
print(balance:match "()") -- true
print(balance:match "((()))") -- true
print(balance:match "()()()") -- true
print(balance:match "()(())") -- true
print(balance:match "(") -- false
print(balance:match "(()") -- false
print(balance:match "({)}") -- false
print(balance:match "({})") -- true
print(balance:match "()))((") -- false
[1] http://www.inf.puc-rio.br/~roberto/lpeg/lpeg.html http://www.inf.puc-rio.br/~roberto/lpeg/lpeg.html