lua - 找到这两组项目的所有可能组合?卢阿
问题描述
我在 Haskell 和 Python 等不同的编程语言中看到了对这个问题的类似答案,但它们都使用 Lua 没有的内置功能,所以请不要将此问题标记为重复。
假设我有两个如下表:
table1 = {A,B,C}
table2 = {D,E,F}
我想找到匹配两个表中项目的所有独特方法,答案应该是(非正式表示法):
AD,BE,CF
AD,BF,CE
AE,BD,CF
AE,BF,CD
AF,BD,CE
AF,BE,CD
所以答案将存储在 table[1] 的表格中{{A, D}, {B, E}, {C, F}}
,依此类推。
表格长度可以是任何东西,但两者的大小相同。
解决方案
function get_all_combinations(arr1, arr2)
local n, e, all_comb = #arr1, {}, {}
for j = 1, n do
e[j] = arr2[j]
end
local function generate(m)
if m <= 1 then
local comb = {}
all_comb[#all_comb + 1] = comb
for j = 1, n do
comb[j] = arr1[j]..e[j] -- it should be {arr1[j], e[j]} to fulfill your requirements
end
else
for j = 1, m do
generate(m - 1)
local k = j < m and m % 2 == 1 and 1 or j
e[k], e[m] = e[m], e[k]
end
end
end
generate(n)
return all_comb
end
for i, v in ipairs(get_all_combinations({"A", "B", "C"}, {"D", "E", "F"})) do
print(i, table.concat(v, ";"))
end
推荐阅读
- c# - 在 C# 中选择类名的变量值
- ms-access - 组合框搜索出现更多记录微软访问
- matlab - 如何创建具有不同标记和颜色的散点图
- android - AWS-将现有后端集成到 android 项目
- mongodb - mongoDB groupBy Id, color
- vuejs3 - 我已将 ag-grid-vue3 导入 vue3 项目,但当 rowdata 更改时无法呈现
- powershell - 读取主机文件名列表,然后将输入导出到 csv 文件
- python - 从元组列表中删除相似度字符串
- java - Firebase:如何检查孩子是否存在于不同的路径上?
- pytorch - 如何在 BERT 模型上添加 Sequentilal CNN 层?