Re: Insulating data from code

• To: mathgroup at smc.vnet.net
• Subject: [mg66544] Re: Insulating data from code
• From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
• Date: Fri, 19 May 2006 03:40:23 -0400 (EDT)
• Organization: The Open University, Milton Keynes, UK
• References: <e4ekai\$9av\$1@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```On 5/18/06, Ray Koopman <koopman at sfu.ca> wrote:
> Thanks, J-M, but there seems to be a problem:
>
> In[3]:= A = {a, b, c, d};
>         B = {1, 2, {3, 4}};
>
> In[5]:= copyPartition[A,B]
>        copyPartition2[A,B]
>
> Out[5]= {a,b,{c,d}}
> Out[6]= {{},{},{a,b}}
>
> Regards,
> Ray

Hi Ray,

That's right. I had not done enough testing before posting. Sorry about
that.
The following version of the function seems to work well as long as
the first list is flat.

In[1]:=
copyPartition3[A_List, B_List] /;
Length[A] >= Length[Flatten[B]] :=
Module[{start, end, lst},
lst = (If[AtomQ[#1], {#1}, #1] & ) /@ B;
start = FoldList[Plus, 1, Length /@ lst];
end = start - 1; start = Most[start];
end = Rest[end];
lst = ((A[[#1]] & ) /@ Range[First[#1],
Last[#1]] & ) /@ Transpose[{start, end}];
MapAt[#1[[1]] & , lst, Position[AtomQ /@ B, True]]]

In[2]:=
A = {a, b, c, d};
B = {1, 2, {3, 4}};

In[4]:=
copyPartition3[A, B]

Out[4]=
{a, b, {c, d}}

In[5]:=
copyPartition[A_List, B_List] /;
Length[A] >= Length[Flatten[B]] :=
Module[{i = 0}, Map[A[[++i]] & , B, {-1}]]

In[6]:=
copyPartition[A, B]

Out[6]=
{a, b, {c, d}}

In[7]:=
A = {a, b, c, d, {e, f}, g, h};
B = {1, {2}, {3, 4}, {5, {6, 7}}};

In[9]:=
copyPartition3[A, B]

Out[9]=
{a, {b}, {c, d}, {{e, f}, g}}

In[10]:=
copyPartition[A, B]

Out[10]=
{a, {b}, {c, d}, {{e, f}, {g, h}}}

Best regards,
Jean-Marc

```

• Prev by Date: Re: Insulating data from code
• Next by Date: derivative of cubic spline
• Previous by thread: Re: Insulating data from code
• Next by thread: Re: Insulating data from code