local numbers = {1, 3, 2, 1, 3}
-- A key of seen is a value already met;
-- the order of first occurrence is kept
local seen = {}
local unique = {}
for _, number in ipairs(numbers) do
if not seen[number] then
seen[number] = true
unique[#unique + 1] = number
end
end
-- unique = 1, 3, 2
-- pairs gives the keys of seen in an order
-- that is not promised: sort them
local sorted_unique = {}
for number in pairs(seen) do
sorted_unique[#sorted_unique + 1] = number
end
table.sort(sorted_unique)
-- sorted_unique = 1, 2, 3
print("unique = " .. table.concat(unique, ", "))
print("sorted_unique = "
.. table.concat(sorted_unique, ", "))