do
local class = {}
class.add = function(group, chara)
for i, v in ipairs(group.menber) do
if v == chara then return false end
end
group.menber[1+#group.menber] = chara
return true
end
class.remove = function(group, chara)
local new = {}
local flag = false
for i, v in ipairs(group.menber) do
if v == chara then
flag = true
else
new[1+#new] = v
end
end
return flag
end
class.filter = function(group, method)
local r1 = {}
local r2 = {}
for i, v in ipairs(group.menber) do
if method(v) then
r1[1+#r1] = v
else
r2[1+#r2] = v
end
end
return group.new(r1), group.new(r2)
end
class.count = function(group)
return #group.menber
end
local index = {__index=class}
group.new = function(menber)
local group = setmetatable({}, index)
group.menber = menber
group.menber = group.menber or {}
return group
end
local all_characters
group.all = function()
all_characters = all_characters or group.new()
return all_characters
end
end