Re: permutations?
- To: mathgroup at smc.vnet.net
- Subject: [mg46492] Re: permutations?
- From: Paul Abbott <paul at physics.uwa.edu.au>
- Date: Fri, 20 Feb 2004 06:53:40 -0500 (EST)
- Organization: The University of Western Australia
- References: <c11sc1$n64$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
In article <c11sc1$n64$1 at smc.vnet.net>,
sean_incali at yahoo.com (sean kim) wrote:
> let's say you have...
>
> a, b, c, d, e and...
>
> a', b', c', d', e'
>
> what are the possible combination will go from a( or a' ) to e ( or
> e')
>
> so that you get...
>
> {a b c d e}, {a b c d e'}, {a b c d' e}, {a b c d' e'}, {a b c' d e},
> { a b c' d' e}, {a, b, c' d e'}, {a, b, c' d' e'}....so on
>
> I have 32 from doing it the brute force way by hand. how do i do that
> with Mathematica?
There are, of course, many ways. If l1 and l2 are your two (equal
length) lists then
Flatten /@ Distribute[{{#[[1]]},{#[[2]]}} & /@
Transpose[{l1, l2}], List, List]
does the trick. I find Distribute rather subtle and expect that there
might be a better way to do this using Distribute.
Another way that computes all the lists (using Boolean logic) is
List @@@ List @@ LogicalExpand[ And @@ Or @@@ (l1 + l2)]
However, this does not preserve the ordering you want and an application
of Sort is required.
A third way is to recognise the "binary" nature of your problem: the
position of the changing element corresponds to the binary sequence 0,
1, 10, 11, 100, 101, 110, 111, etc.
With[{n = Length[l1]}, (l2 # + (1 - #) l1 & ) /@
(PadLeft[IntegerDigits[#, 2], n] & ) /@ Range[0, 2^n - 1]]
> also... what kinda problem is described above?
Well, how did _you_ encounter the problem? Often this will suggest a
good approach to solving it.
You might find "Computational Recreations in Mathematica" by Ilan Vardi
interesting.
Cheers,
Paul
--
Paul Abbott Phone: +61 8 9380 2734
School of Physics, M013 Fax: +61 8 9380 1014
The University of Western Australia (CRICOS Provider No 00126G)
35 Stirling Highway
Crawley WA 6009 mailto:paul at physics.uwa.edu.au
AUSTRALIA http://physics.uwa.edu.au/~paul