There might be a more elegant approach. That said, this (generating all permutations) is an exponential growth algorithm, and your addition does not make that aspect any worse.
So, personally, I would not worry about it. Still, it would be nice to find another approach. Thanks, -- Raul On Wed, Jun 15, 2016 at 5:42 PM, Louis de Forcrand <[email protected]> wrote: > Hi, > > How would you go about generating all unique permutations of a list, > while counting each perm and its reversal as one? > A perhaps clearer (but less efficient) way of doing this is generating > all permutations and then removing (reversed) duplicates: > > allperms=: (A.&i.~ !) 4 NB. 4 is just an example > ]those_I_want=: ([: {."2@~. (/:~@,: |.)"1) allperms > 0 1 2 3 > 0 1 3 2 > 0 2 1 3 > 0 2 3 1 > 0 3 1 2 > 0 3 2 1 > 1 0 2 3 > 1 0 3 2 > 1 2 0 3 > 1 3 0 2 > 2 0 1 3 > 2 1 0 3 > > There is surely a better way to do this! > > Thanks, > Louis > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
