下面就是一个最近微信上流传的一个测试:
假如5块钱可以买一个女朋友,你会买什么样的?下面是每项的价格
有钱-4元, 长得好看-3元, 会做饭-3元, 忠诚-3元, 处女-2元, 温柔-2元, 活泼可爱-2元, 大长腿-1元, 聪明-1元, 胸大-1元
--计算从1到maxNumber的自然数中取selNum个数的所有组合
function CalcNaturalNumberComb(maxNumber, selNum, tabReturn)
local tabComb = {}
comb_natural_number_recursive_func = function(m,k,tab)
for i=m,k,-1 do
tabComb[k+1] = i
if k > 1 then
comb_natural_number_recursive_func(i-1,k-1,tab)
else
local tabOut = {}
local nStart = tonumber(tabComb[1])
for n=nStart,1,-1 do
table.insert(tabOut,tabComb[n+1])
end
table.insert(tab,tabOut)
end
end
end
tabComb = {}
tabComb[1] = selNum
comb_natural_number_recursive_func(maxNumber, selNum, tabReturn)
end
TAB_X =
{
["有钱"] = 4,
["长得好看"] = 3, ["会做饭"] = 3, ["忠诚"] = 3,
["处女"] = 2, ["温柔"] = 2, ["活泼可爱"] = 2,
["大长腿"] = 1, ["聪明"] = 1, ["胸大"] = 1,
}
TAB_NAME = {}
TAB_VAL = {}
for k,v in pairs(TAB_X) do table.insert(TAB_NAME,k) table.insert(TAB_VAL,v) end
local tabCombAll = {}
for i=1,table.count(TAB_X) do
local tabComb = {}
CalcNaturalNumberComb(table.count(TAB_X), i, tabComb)
table.insert(tabCombAll, tabComb)
end
local id = 1
for i=1,#tabCombAll do
for k=1,#tabCombAll[i] do
local c = 0
local s = ""
for m=1,#tabCombAll[i][k] do
c = c + TAB_VAL[tabCombAll[i][k][m]]
s = s .. TAB_NAME[tabCombAll[i][k][m]].."["..TAB_VAL[tabCombAll[i][k][m]].."]"
end
if c == 5 then
print(string.format("%02d.%s", id, s))
id = id + 1
end
end
end