Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --------------------------------------------------------------------
- local byte, len, char, sub = string.byte, string.len, string.char, string.sub
- local floor, log10, ceil = math.floor, math.log10, math.ceil
- local concat = table.concat
- local function numbs(number) -- math.numbs
- return floor(log10(number)) + 1
- end
- local function first(number, numeral) -- math.first
- numeral = numeral or 1
- local numbs = numbs(number)
- return floor(number / ( 10 ^ ( numbs - numeral ) ))
- end
- local function last(number, numeral) -- math.last
- numeral = numeral or 1
- return number % ( 10 ^ numeral )
- end
- --------------------------------------------------------------------
- local function get_numb(char)
- local a = first(char, numbs(char) - 1)
- local b = last(char)
- if b > 5 then a = a + 1 end
- return a
- end
- local function find_table_value(tab, value)
- for i = 1, #tab do
- if tab[i] == value then return i end
- end
- end
- --------------------------------------------------------------------
- local params, chars = {}, {}
- if not _ARGS then return end
- local text = { _ARGS }
- local ret = '++++++++++['
- local h, l = 0, 0
- text = Utf8ToAnsi(concat(text, ' '))
- for i = 1, #text do
- local ch = byte(text, i)
- local a = get_numb(ch)
- if not find_table_value(params, a) then
- params[#params + 1] = a
- end
- end
- for i = 1, #params do
- h = h + 1
- ret = ret .. '>'
- for l = 1, params[i] do ret = ret .. '+' end
- end
- for i = 1, h do
- ret = ret .. '<'
- end
- ret = ret .. '-]'
- for i = 1, #text do
- local ch = byte(text, i)
- local a = get_numb(ch)
- local m = find_table_value(params, a)
- if m then
- if not chars[m] then chars[m] = a end
- while l ~= m do
- if l > m then
- l = l - 1
- ret = ret .. '<'
- elseif l < m then
- l = l + 1
- ret = ret ..'>'
- end
- end
- local d = chars[m] * 10
- while d ~= ch do
- if d > ch then
- d = d - 1
- ret = ret .. '-'
- elseif d < ch then
- d = d + 1
- ret = ret .. '+'
- end
- end
- chars[m] = d / 10
- ret = ret .. '.'
- end
- end
- return ret
Add Comment
Please, Sign In to add comment