I don't know if this is more efficient than enumerating with distinct directions and weeding... it seems kind of heavyweight to me:

#######
library(gtools)
directionless_circular_permutations <- function( n ) {
  v <- seq.int( n-1 )
  ix <- combinations( n-1, 2 )
  jx <- permutations( n-3, n-3 )
  x <- lapply( seq.int( nrow( ix ) )
             , function( i ) {
                cbind( ix[ i, 1 ]
                     , permutations( n-3
                                   , n-3
                                   , v[ -ix[ i, ] ]
                                   )
                     , ix[ i, 2 ]
                     )
               }
             )
  cbind( do.call( rbind, x ), n )
}
#######

For more speed, perhaps use Rcpp with [1]?

[1] http://howardhinnant.github.io/combinations.html

On Thu, 29 Mar 2018, Ranjan Maitra wrote:

Thanks!

Yes, however, this seems a bit wasteful. Just wondering if there are other, more efficient options possible.

Best wishes,
Ranjan


On Thu, 29 Mar 2018 22:20:19 -0400 Boris Steipe <boris.ste...@utoronto.ca> 
wrote:

If one is equal to the reverse of another, keep only one of the pair.

B.



On Mar 29, 2018, at 9:48 PM, Ranjan Maitra <mai...@email.com> wrote:

Dear friends,

I would like to get all possible arrangements of n objects listed 1:n on a 
circle.

Now this is easy to do in R. Keep the last spot fixed at n and fill in the rest 
using permuations(n-1, n-1) from the gtools package.

However, what if clockwise or counterclockwise arrangements are the same? I 
know that half of the above (n - 1)! arrangements are redundant.

Is there an easy way to list these (n-1)!/2 arrangements?

I thought of only listing the first half from a call to permuations(n - 1, n - 
1), but while this holds for n = 4, it does not for n = 5. So, I am wondering 
if there is another function or tweak which would easily do this.

Many thanks in advance for any help. and best wishes,
Ranjan

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.



--
Important Notice: This mailbox is ignored: e-mails are set to be deleted on 
receipt. Please respond to the mailing list if appropriate. For those needing 
to send personal or professional e-mail, please use appropriate addresses.

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnew...@dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                      Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to