Bhaskara e um formula matematica capaz de resolver uma equação de segunda grau(ax^2+bx+c) ela é muito abordada no 6°~9° do ensino fundamental chegando também no ensino medio.
Eu fiz uma versão com ultlização simples basta colocar a equação de 2 grau numa string que ele irá resolver a sua equação.
function string.explode(e, sep)
local result = {}
e:gsub("[^".. sep .."]+", function(s) table.insert(result, s:match("^%s*(.-)%s*$")) end)
return result[1] and result or 0
end
function executeFormBashakara(bash)
local function validateZero(x)
local x = tostring(x)
if string.sub(x, 1, 1) == "-" and string.sub(x, 2, 2) == "0" or not tonumber(x) then
return 0
end
return x
end
local function adptBhaskSing(bask)
bask = string.gsub(bask, " ", "")
bask = string.gsub(bask, "-", "+-")
return bask
end
local function stringToNumber(str)
for i =1, #str do
local y = string.sub(str, 1, i)
if y ~= "-" and y ~= "+" then
if not tonumber(y) then
return tonumber(x)
end
end
x = y
end
return y
end
bash = adptBhaskSing(bash)
a = string.explode(bash, "+")[1]
b = string.explode(bash, "+")[2]
c = string.explode(bash, "+")[3]
delta = (stringToNumber(b)^2)+(-4*stringToNumber(a)*stringToNumber(c))
if delta < 0 then
return false,delta
end
bhask1 = validateZero((stringToNumber(b)+math.sqrt(delta))/(2*stringToNumber(a)))
bhash2 = validateZero((stringToNumber(b)-math.sqrt(delta))/(2*stringToNumber(a)))
return bhask1,bhash2
end
x,y = executeFormBashakara("4x2 = 0 ")
print(x)
print(y)