function findmaxinmultiset(ms) local max, winner for elem, count in pairs(ms) do if max == nil or count > max then max, winner = count, elem end end return winner end map = {["#326"]={A={66,66},B={95,95},H={98,98},P={96,96},X={76,76}},["#327"]={A={82,82},B={82,82},H={95,95},P={54,54},X={88,88}},["#328"]={A={59,59},B={64,64},H={93,93},P={58,58},X={80,80}}} letters = {} for feature, submap in pairs(map) do f = otherresults[feature] if f == nil then error("Need recalc, waiting for "..feature) end _, _, value = string.find(f, ": ([0-9.]+)") if value ~= nil then value = tonumber(value) local mindist, closestletter for letter, range in pairs(submap) do local dist if value >= range[1] and value <= range[2] then dist = 0 else dist = value < range[1] and range[1]-value or value-range[2] end if mindist == nil or dist < mindist then closestletter, mindist = letter, dist end end if closestletter ~= nil then letters[closestletter] = letters[closestletter] == nil and 1 or letters[closestletter]+1 end end end winner = findmaxinmultiset(letters) if winner ~= nil then return "Probably: "..winner end