How to generate only rotationally-unique permutations?
Arnaud Delobelle
arnodel at gmail.com
Sat May 19 04:15:39 EDT 2012
On 19 May 2012 06:23, John O'Hagan <research at johnohagan.com> wrote:
> To revisit a question which I'm sure none of you remember from when I posted it
> a year or so ago - there were no takers at the time - I'd like to try again with
> a more concise statement of the problem:
>
> How to generate only the distinct permutations of a sequence which are not
> rotationally equivalent to any others? More precisely, to generate only the most
> "left-packed" of each group of rotationally equivalent permutations, such that
> for each permutation p:
This makes me think of Lyndon words. A Lyndon word is a word which is
the only lexicographical minimum of all its rotations. There is a
very effective way of generating Lyndon words of length <= n. It may
be possible to adapt it to what you want (obviously as Lyndon words
are aperiodic you'd have to generate Lyndon word of length d | n when
suitable).
--
Arnaud
More information about the Python-list
mailing list