Muito bom, mas loadstring já faz isso.
local value = "280 + 220"
loadstring("return print(" .. value .. ")")()info
Grupo: Marquês
Registrado: 02/08/12
Posts: 1k
Reputação: +234
Char no Tibia: Maurolkit

Muito bom, mas loadstring já faz isso.
local value = "280 + 220"
loadstring("return print(" .. value .. ")")()Editado Agosto 14 por Skymagnum
info
Grupo: Infante
Registrado: 04/03/11
Posts: 1.6k
Reputação: +393
Char no Tibia: No Have

Muito bom, mas loadstring já faz isso.
local value = "280 + 220" loadstring("return print(" .. value .. ")")()
Acho que você não entendeu o proposito da função.
Era para fazer a operação sem usar um operador matematico ou um suporte como as blibiotecas maths.
Fazendo assim você so ta transformando a string em um codigo.
Aproveitando retirei a limitação dos numeros os algarismo podem ter quantidade diferentes
Editado Agosto 15 por caotic
info
Grupo: Infante
Registrado: 04/03/11
Posts: 1.6k
Reputação: +393
Char no Tibia: No Have
Eu estava pensando em desenvolver o operador de adição então resolvi desenvolver uma função capaz de fazer a operação de adição sem usar nenhum tipo de operador matematico.
Claro que antes precisamos da tabuada mais como ele e muito extensa e ninguem quer ficar escrevendo a tabuada desenvolvi uma função que e capaz de dar a tabuada numa tabela.
Ela tem uma unica limitação que quando os valores somados tiver uma quantidade algarismo diferentes podem acontecer alguns bugs.
Do mais FICO UM POG QUE NOSSA MAIS TA VALENDO.
function string.explode(e, sep) local result = {} e:gsub("[^".. sep .."]+", function(s) table.insert(result, s:match("^%s*(.-)%s*$")) end) return result end function generateTableAdd(table) if table then local result = "local tab = {\n" end result = "{\n" for i=0, 9 do for x=0, 9 do local add = x+i local sep = "," if add >= 18 then sep = "" end result = result..'["'..i..'+'..x..'"] = '..add..''..sep..'\n' end end return result.."\n}" end function repeatValue(char, rep) str = "" for i=1, rep do str = str..char end return str end function getConvertPosByValueAddition(string) local sin = "+" local value = string.explode(string, sin) if #value[1] > #value[2] then string = value[1].."+"..repeatValue("0", #value[1]-#value[2])..value[2] end return string end function getAdditionByString(string) string = getConvertPosByValueAddition(string) print(string) local sin = "+" local add = string.explode(string, sin) local result = "" y = loadstring('return (' .. generateTableAdd() .. ')')() local table = loadstring('return (' .. generateTableAdd() .. ')')() i = #add[1] while i >= 1 do s = s and s or "no" local number = string.sub(add[1], i, i) ss = 0 if string.sub(add[2], i, i) ~= "" and s ~= "no" then local ss = y[string.sub(add[2], i, i).."+"..s] end local num = string.sub(add[2], i, i) ~= "" and string.sub(add[2], i, i) or "0" local p = s ~= "no" and s or "0" local number1 = ""..num.."+"..p.."" local adds = y[number1] local cont = tostring(y[number.."+"..adds]) s = "no" a = string.sub(cont, 2, 2) if #cont <= 1 then a = string.sub(cont, 1, 1) end result = result..a if #cont >= 2 then s = string.sub(cont, 1, 1) end i = i-1 end if s ~= "no" then result = result..s end return string.reverse(result) end print(getAdditionByString("500+500"))Editado Agosto 15 por caotic