Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local input = dofile('input')
- input(nil, nil, nil, nil, nil, nil, nil, function(_sLine, _nPos, _nScroll, _bLast)
- local sFg = ''
- local sBg = ''
- local tPstack = {}
- local tCBstack = {}
- local tBstack = {}
- local tMatching = {}
- for i = 1, #_sLine do
- local sChar = _sLine:sub(i, i)
- local tStack
- if sChar == '(' then
- table.insert(tPstack, i)
- elseif sChar == ')' then
- tStack = tPstack
- elseif sChar == '{' then
- table.insert(tCBstack, i)
- elseif sChar == '}' then
- tStack = tCBstack
- elseif sChar == '[' then
- table.insert(tBstack, i)
- elseif sChar == ']' then
- tStack = tBstack
- end
- if tStack and #tStack > 0 then
- tMatching[i] = tStack[#tStack]
- tMatching[tStack[#tStack]] = i
- table.remove(tStack)
- end
- sFg = sFg .. '0'
- sBg = sBg .. 'f'
- end
- if not _bLast then
- if tMatching[_nPos] then
- local nMatch = tMatching[_nPos]
- sFg = sFg:sub(1, _nPos - 1) .. '9' .. sFg:sub(_nPos + 1)
- sFg = sFg:sub(1, nMatch - 1) .. '9' .. sFg:sub(nMatch + 1)
- end
- end
- return sFg, sBg
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement