У меня есть функция, которая принимает шесть восьмеричных (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' - '7', где в перестановке каждый символ появляется ровно один раз? Или все массивы шести восьмеричных цифр в порядке? – mpeterv
Кроме того, связанная глава PiL имеет именно ту функцию, которая вам нужна. Вы можете поместить восьмеричные цифры в массив, а затем передать его функции «permgen», чтобы получить итератор. – mpeterv
Я так не думал об этом, я считаю, что ты прав. – ridthyself