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

```

• Prev by Date: Re: Computing sets of equivalences
• Next by Date: Simple Question [Clearing Variables]
• Previous by thread: RE: permutations?
• Next by thread: bug in integration with version 5.0 ?