۲۱٬۴۶۶
ویرایش
بدون خلاصۀ ویرایش |
بدون خلاصۀ ویرایش |
||
خط ۵۴: | خط ۵۴: | ||
-- Source: https://stackoverflow.com/questions/35572435/how-do-you-do-the-fisher-yates-shuffle-in-lua | -- Source: https://stackoverflow.com/questions/35572435/how-do-you-do-the-fisher-yates-shuffle-in-lua | ||
function FYShuffle(tInput, indexList) | function FYShuffle(tInput, indexList) | ||
-- چک کردن معتبر بودن indexList | |||
if not indexList or #indexList ~= #tInput then | |||
error("indexList is nil or does not match the length of tInput") | |||
end | |||
local tReturn = {} | local tReturn = {} | ||
local tCopy = {table.unpack(tInput)} -- ایجاد یک کپی از tInput برای جلوگیری از تغییرات ناخواسته در آن | |||
for i = #tInput, 1, -1 do | for i = #tInput, 1, -1 do | ||
local j = indexList[#tInput - i + 1] | local j = indexList[#tInput - i + 1] | ||
tCopy[i], tCopy[j] = tCopy[j], tCopy[i] | |||
table.insert(tReturn, | table.insert(tReturn, tCopy[i]) | ||
end | end | ||
return tReturn | return tReturn | ||
end | end | ||
return p | return p |