Commit 4649e2f1 authored by Stefan Behnel's avatar Stefan Behnel

another benchmark optimisation

parent a19bc7f4
...@@ -21,7 +21,7 @@ except ImportError: ...@@ -21,7 +21,7 @@ except ImportError:
from __builtin__ import xrange as _xrange from __builtin__ import xrange as _xrange
# Pure-Python implementation of itertools.permutations(). # Pure-Python implementation of itertools.permutations().
@cython.locals(n=int, i=int) @cython.locals(n=int, i=int, j=int)
def permutations(iterable): def permutations(iterable):
"""permutations(range(3), 2) --> (0,1) (0,2) (1,0) (1,2) (2,0) (2,1)""" """permutations(range(3), 2) --> (0,1) (0,2) (1,0) (1,2) (2,0) (2,1)"""
pool = tuple(iterable) pool = tuple(iterable)
...@@ -30,7 +30,7 @@ def permutations(iterable): ...@@ -30,7 +30,7 @@ def permutations(iterable):
cycles = list(range(1, n+1))[::-1] cycles = list(range(1, n+1))[::-1]
yield [ pool[i] for i in indices ] yield [ pool[i] for i in indices ]
while n: while n:
for i in range(n-1, -1, -1): for i in reversed(range(n)):
cycles[i] -= 1 cycles[i] -= 1
if cycles[i] == 0: if cycles[i] == 0:
indices[i:] = indices[i+1:] + indices[i:i+1] indices[i:] = indices[i+1:] + indices[i:i+1]
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment