function table_merge(t1, t2)
for _, v in ipairs(t2) do
table.insert(t1, v)
end
end
function getMaster(tbl, rules)
local result = false
for _, rule in ipairs(rules) do
for i, v in ipairs(tbl) do
result = v
if tostring(v) ~= tostring(rule) then
result = false
break
end
end
if result then break end
end
return result
end
function start(data, rules)
local master_key, master_val
local _temp, continue = {}, true
for i, tbl in ipairs(data) do
local master = getMaster(tbl, rules)
if master and master ~= master_val then
continue = true
end
if continue then
if master then
master_key = i
master_val = master
elseif tbl[#tbl] == master_val then
tbl[#tbl] = nil
table.insert(_temp[master_key], master_val)
elseif master_key then
continue = false
end
end
_temp[i] = tbl
end
local result = {}
for i, tbl in ipairs(_temp) do
table_merge(result, tbl)
end
return table.concat(result, "")
end
-- RULES
local rules = { 0, 1}
local data = {
{ 0, 0, 0, 0, 0, 0 },
{ 1, 1, 1, 1, 1, 0 },
{ 0, 0, 0, 8, 1, 0 },
{ 1, 1, 1, 1, 8, 8 },
{ 0, 0, 0, 0, 0, 0 },
}
start(data, rules)
输出:
000000001111100081111188000000
预期的结果应该是这样的:
000000001111110008111188000000
如何获得所需的结果?该表可以包含六个以上的元素,但最初是六个。所以当所有元素都为1时,它会检查下一个立即表,看最后一个元素是否也是1;如果为真,则将其删除并添加到六中,如果最后一位为 1,它将再次检查下一个立即表,如果为真,它也将删除并添加到七中,如果是 8。它将再次检查,如果false 回到它离开的地方。所以这里删除元素的表的数量变成了五个。所以我希望如果所有五个元素都是1或0,它们也能满足规则。但似乎只有六个元素满足规则......
我希望它很清楚谢谢