RE: Expanding a nested structure (pattern matching?)
- To: mathgroup at smc.vnet.net
- Subject: [mg24849] RE: [mg24835] Expanding a nested structure (pattern matching?)
- From: Wolf Hartmut <hwolf at debis.com>
- Date: Wed, 16 Aug 2000 03:24:12 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
> -----Original Message-----
> From: John A. Gunnels [SMTP:gunnels at cs.utexas.edu]
To: mathgroup at smc.vnet.net
> Sent: Tuesday, August 15, 2000 9:04 AM
> To: mathgroup at smc.vnet.net
> Subject: [mg24835] Expanding a nested structure (pattern matching?)
>
> I hope that this is not a _really_ stupid question, but I have run
> into what appears to be a problem using rewrite rules to un-nest
> a structure.
>
> The crux of the problem (I have tried to make it as simple as possible
> without losing the essence of my difficulty) has to do with duplicating
> the structure surrounding the terms that I wish to rewrite.
>
> Any nested list is intended to represent a choice point and my rewrite
> rules are aimed at enumerating all of the possible sequences of choices.
>
> An example:
> Input:
> A[B, C, D[ {F, G}, {H, J}]]
> should become
> A[B, C, D[F, H]],
> A[B, C, D[F, J]],
> A[B, C, D[G, J]],
> A[B, C, D[G, J]]
>
> Obviously, the order isn't important, but the nesting isn't restricted
> to level 2 nor am I guaranteed that all heads or elements are unique.
> I realize that I may have to simply write the code that iterates through
> the different Depth[]s, but this seems like it might have a very clean
> answer that simply hasn't occurred to me.
>
> Thanks,
> John A. Gunnels
> gunnels at cs.utexas.edu
>
[Hartmut Wolf]
Hello John,
if you invariably have expressions of form a[b,c,d[{f,g},{g,h}]], then you
may MapAt (Distribute over List) to the right position (3 here) and finally
Thread:
In[14]:=
Thread at MapAt[Distribute[#, List] &,
a[b, c, d[{f, g}, {h, j}]], 3]
Out[14]=
{a[b, c, d[f, h]],
a[b, c, d[f, j]],
a[b, c, d[g, h]],
a[b, c, d[g, j]]}
-- Hartmut