Lua多维数组连续重复序列查找脚本qty=4时结果异常问题
问题根源
你的脚本当前实现的是统计长度为qty的连续子序列在数组中出现的总次数,但你实际需要的是检测是否存在连续qty个完全相同的子数组(即同一个子数组连续重复qty次)。当qty=4时,原数组中确实存在两个不同位置的长度为4的子序列(第1-4个元素、第3-6个元素)完全相同,所以脚本输出了FOUND;但这两个子序列并非连续重复的相同子数组,因此不符合你的预期。
修复后的脚本
data = {{1,2,3},{1,2,1},{1,2,3},{1,2,1},{1,2,3},{1,2,1}} qty = 4 -- dynamic variables function find_sequence(qty) if qty < 1 or qty > #data then print("INVALID INPUT or NOT ENOUGH DATA") return end local found = false -- 遍历每个可能的起始位置,检查连续qty个元素是否完全相同 for i = 1, #data - qty + 1 do local target = table.concat(data[i]) local is_duplicate = true -- 验证后续qty-1个元素是否与目标一致 for j = i + 1, i + qty - 1 do if table.concat(data[j]) ~= target then is_duplicate = false break end end if is_duplicate then found = true local seq_str = string.rep(target .. " ", qty):sub(1, -2) print("FOUND:", seq_str:gsub("%d", "%1 "), "Occurs starting at index:", i) end end if not found then print("NOT FOUND") end end find_sequence(qty)
修改说明
- 核心逻辑调整为:对每个起始索引
i,以第i个元素为基准,检查后续qty-1个元素是否完全一致 - 仅当连续
qty个元素全部相同时,才判定为找到符合要求的序列 - 输出时标注序列的起始索引,便于定位位置
测试qty=4时,原数组中不存在连续4个相同的子数组,因此会输出NOT FOUND,符合你的预期。
内容的提问来源于stack exchange,提问作者atlas oser
相关产品推荐
相关产品推荐

