--!native --!optimize 2 -- Compiled with roblox-ts v3.0.0 local TS = _G[script] local CharAt = TS.import(script, script.Parent.Parent, "Utils", "CharAt") local function LevenshteinDistanceScore(term, query) local _exp = table.create(#term + 1, 0) -- ▼ ReadonlyArray.map ▼ local _newValue = table.create(#_exp) local _callback = function() return table.create(#query + 1, 0) end for _k, _v in _exp do _newValue[_k] = _callback(_v, _k - 1, _exp) end -- ▲ ReadonlyArray.map ▲ local matrix = _newValue for i = 0, #term do matrix[i + 1][1] = i end for j = 0, #query do matrix[1][j + 1] = j end for i = 1, #term do for j = 1, #query do local cost = if CharAt(term, i - 1) == CharAt(query, j - 1) then 0 else 1 matrix[i + 1][j + 1] = math.min(matrix[i][j + 1] + 1, matrix[i + 1][j] + 1, matrix[i][j] + cost) end end return matrix[#term + 1][#query + 1] end return { LevenshteinDistanceScore = LevenshteinDistanceScore, }