RE: How to construct all possible orderings
- To: mathgroup at smc.vnet.net
- Subject: [mg15638] RE: [mg15588] How to construct all possible orderings
- From: "ELLIS, Luci" <EllisL at rba.gov.au>
- Date: Sat, 30 Jan 1999 04:28:36 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Carlos,
Try the Table[] command and a couple of replacement rules:
Table[{i,j,k},{i,3},{j,3},{k,3}]/. {1->"A",2->"B",3->"C"} This will
give you a 3*3*3*3 tensor. To get a vector of "ABC"-type strings, Apply
StringJoin to the lowest level (which will probably be 3, but check
this, I don't have Mathematica on this machine to check it myself) and
then Flatten.
So the final function will look like:
Flatten[Apply[StringJoin,Table[{i,j,k},{i,3},{j,3},{k,3}]/.
{1->"A",2->"B",3->"C"},{3}]]
For the general case with N elements, the replacement rule list will
have to be a Table[] or Array command and the Table will have depth n
eg something like:
orderings[n_Integer]/;n>0 :=
With[{iters=Transpose[{Array[i,n],Table[n,{n}]}] , elem = Array[i,n]},
(* can objects of the form i[1] be used as an iterator? I don't know
and can't test it here. *)
Flatten[Apply[StringJoin, Map[ToString, Table[elem, Evaluate [Sequence
@@ iters] ]/. Thread[Range[n]->Array[A,{n}]],{-1}]
,{n}]] ]
Of course, the analytical solution is that there are n^n combinations,
so this could get pretty huge for even moderate n.
Hope this helps,
Luci
____________________________________________________ Luci Ellis
ph:61-2-9551-8881 Acting Senior Economist fx:61-2-9551-8833
Financial & Monetary Conditions ellisl at rba.gov.au Economic Analysis
Department GPO Box 3947 Reserve Bank of Australia Sydney
NSW 2001
-----Original Message-----
From: Carlos Carreto [mailto:ccarreto at ipg.pt] To: mathgroup at smc.vnet.net
Subject: [mg15638] [mg15588] How to construct all possible orderings
*** This E-Mail has been checked by MAILsweeper *** Hello,
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
How can I do this?
Thank you.
-:- Carlos