我有一个函数,它以六个八进制(0-7)数字作为参数并返回true或false。
我想运行一个循环来尝试值0-7的每一个排列,并计算“真实”返回的数量。
类似的东西:
function count_possibles()
local count=0
local a,b,c,d,e,f=0,0,0,0,0,0
while possiblepermutations > 0 do
if compare(a,b,c,d,e,f) == true then count = count +1 end
permute(a,b,c,d,e,f)
possiblepermutations = possiblepermutations -1
return count
end
我尝试过使用http://www.lua.org/pil/9.3.html中提供的示例,但这些都是关于迭代表,而不是我正在做的事情。
我不一定关心性能,这个函数是测试我写的比较函数。
在尝试所有可能的排列之前,是否有一种简单的方法可以循环某些东西?
答案 0 :(得分:3)
根据规定的要求,这种直截了当的方法似乎很好:
local count = 0
local total = 0
for a = 0, 7 do
for b = 0, 7 do
for c = 0, 7 do
for d = 0, 7 do
for e = 0, 7 do
for f = 0, 7 do
total = total + 1
if compare(a,b,c,d,e,f) == true then count = count +1 end
end
end
end
end
end
end
return count, total
当然,这与排列无关。我赞成相互冲突的要求(如问题代码中所示),第一个参数是0,0,0,0,0,0。