MathGroup Archive 1999

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: How to construct all possible orderings

  • To: mathgroup at smc.vnet.net
  • Subject: [mg15674] Re: How to construct all possible orderings
  • From: "Stephen P Luttrell" <luttrell at signal.dra.hmg.gb>
  • Date: Sat, 30 Jan 1999 04:29:06 -0500 (EST)
  • Organization: Defence Evaluation and Research Agency
  • References: <78patb$ctc@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

>I am trying to construct all possible orderings  of  for example 3
>elements, where each element can be A, B or C.
>
>The result will be something like this: AAA
>AAB
>AAC
>ABA
>. . .
>CCC

The following code does what you want:

Define a function to pick triplets of elements from {A,B,C}:

In[1]:=f[i_,j_,k_]:={#[[i]],#[[j]],#[[k]]}&[{A,B,C}]

This could easily be generalised to pick n-tuples of elements from any
list.

Now construct a nested list of the lists that you seek:

In[2]:=Array[f,{3,3,3}]

Out[2]={{{{A,A,A},{A,A,B},{A,A,C}},{{A,B,A},{A,B,B},{A,B,C}},{{A,C,A},{A,C,B
},{A,C,

C}}},{{{B,A,A},{B,A,B},{B,A,C}},{{B,B,A},{B,B,B},{B,B,C}},{{B,C,A},{B,

C,B},{B,C,C}}},{{{C,A,A},{C,A,B},{C,A,C}},{{C,B,A},{C,B,B},{C,B,C}},{{
        C,C,A},{C,C,B},{C,C,C}}}}

Now flatten it to make it look even more like what you seek:

In[37]:=Flatten[%,2]

Out[37]={{A,A,A},{A,A,B},{A,A,C},{A,B,A},{A,B,B},{A,B,C},{A,C,A},{A,C,B},{A,
C,C},{B,A,
   
A},{B,A,B},{B,A,C},{B,B,A},{B,B,B},{B,B,C},{B,C,A},{B,C,B},{B,C,C},{C,A,
    A},{C,A,B},{C,A,C},{C,B,A},{C,B,B},{C,B,C},{C,C,A},{C,C,B},{C,C,C}}

I suspect that there might be a clever routine in
DiscreteMath`Combinatorica` that does this directly, but I can't find
it.

Stephen P Luttrell
Signal Processing and Imagery Department DERA Malvern, St.Andrew's Road
Malvern, United Kingdom, WR14 3PS

+44 (0)1684 894046 (tel)
+44 (0)1684 894384 (fax)
luttrell at signal.dera.gov.uk (email)



  • Prev by Date: Re: Next Version of Mathematica?
  • Next by Date: Re: animated, variable color lines in ListPlot
  • Previous by thread: Re: How to construct all possible orderings
  • Next by thread: Re: How to construct all possible orderings