Anonymous user
Permutations: Difference between revisions
→Single yield iterator
(→{{header|Wren}}: Added a library based version.) |
|||
Line 6,172:
===Single yield iterator===
<lang nim>
iterator
let n = xs.len▼
▲ assert n <= 23, "permutation of array longer than 23 is not supported"
▲ let n = xs.len - 1
var
i: int = 1▼
c: array[24, int8]
for i in 0 .. n: c[i] = int8(i+1)▼
▲ for i in 0 .. n: c[i] = int8(i)
while true:
yield xs
Line 6,190 ⟶ 6,187:
c[i] -= 1
let j = if (i and 1) ==
swap(xs[i+1], xs[j])
i =
while c[i] == 0:
c[i]
i = t
</lang>
verification
|