Re: Challenge!
- To: mathgroup at christensen.cybernetics.net
- Subject: [mg915] Re: Challenge!
- From: wagner at bullwinkle.cs.Colorado.EDU (Dave Wagner)
- Date: Sun, 30 Apr 1995 03:49:39 -0400
- Organization: University of Colorado, Boulder
A postscript to my last posting:
In article <3nkksu$obd at news0.cybernetics.net>,
Dave Wagner <wagner at bullwinkle.cs.Colorado.EDU> wrote:
>In article <3nkc03$mq8 at news0.cybernetics.net>,
>Paul E Howland <PEHOWLAND at taz.dra.hmg.gb> wrote:
>>Dear Mathgroup,
>>
>>I have two lists of equal length M.
>>
>>I wish to generate a third list also of length M, where the i th element
>>of this list is either the i th element of the first list, or the i th
>>element of the second list.
>>
>Here's my best shot:
>
>In[167]:=
> interleave[list1_List, list2_List] :=
> #[[Random[Integer, {1,2}]]]& /@ Transpose[{list1, list2}]
It occurred to me after posting that this technique has the added
advantage of being straightforwardly extensible to an arbitrary
number of lists:
interleave[s__List] :=
With[{len = Length[{s}]},
#[[Random[Integer, {1,len}]]]& /@ Transpose[{s}]
]
sa = Array[a,10];
sb = Array[b,10];
sc = Array[c,10];
sd = Array[d,10];
Do[Print[interleave[sa, sb, sc, sc]], {10}]
{b[1], b[2], c[3], c[4], a[5], c[6], c[7], b[8], b[9], b[10]}
{a[1], c[2], b[3], c[4], a[5], c[6], c[7], c[8], c[9], c[10]}
{c[1], c[2], c[3], c[4], a[5], c[6], c[7], a[8], b[9], c[10]}
{c[1], b[2], b[3], c[4], c[5], a[6], a[7], c[8], a[9], c[10]}
{c[1], c[2], a[3], c[4], c[5], c[6], a[7], a[8], b[9], a[10]}
{a[1], c[2], a[3], c[4], b[5], c[6], c[7], a[8], a[9], c[10]}
{b[1], b[2], b[3], c[4], b[5], b[6], c[7], b[8], b[9], c[10]}
{a[1], b[2], b[3], c[4], c[5], a[6], a[7], b[8], a[9], c[10]}
{c[1], a[2], b[3], c[4], c[5], c[6], a[7], a[8], a[9], c[10]}
{b[1], c[2], b[3], c[4], b[5], a[6], c[7], c[8], c[9], c[10]}
Dave Wagner
Principia Consulting
(303) 786-8371
princon at csn.net
http://www.csn.net/princon