Bajban vagyok az iterátor elnevezésével, mert ez egy olyan iterátor, ami örökké fut és mindig új elemet szolgáltat a paraméterként átadott táblából, ha kiszedte az összes elemet, akkor újra kezdi. De azért találtam neki nevet: ÖrökkéLottó :D
Az algoritmus úgy működik, hogy készít egy másolatot a bemeneti táblából úgy, hogy kulcs és az érték is a táblaindex, tehát egy öt elemű táblánál:
shadow = {
[1] = 1,
[2] = 2, -- *
[3] = 3,
[4] = 4,
[5] = 5
}
shadow.count = 5
Ha kisorsoltuk a 2-es indexet, akkor a shadow tábla így módosul:
shadow = {
[1] = 1,
[2] = 4, -- *
[3] = 3,
[4] = 5,
[5] = 5
}
shadow.count = 4