Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2006
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Insulating data from code

  • To: mathgroup at smc.vnet.net
  • Subject: [mg66575] Re: Insulating data from code
  • From: Paul Abbott <paul at physics.uwa.edu.au>
  • Date: Sat, 20 May 2006 04:47:58 -0400 (EDT)
  • Organization: The University of Western Australia
  • References: <e4ekai$9av$1@smc.vnet.net> <e4jtnn$d02$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

In article <e4jtnn$d02$1 at smc.vnet.net>, Peter Pein <petsie at dordos.net> 
wrote:

> Ray Koopman schrieb:
> >>From time to time I've wanted to partition the first level of one
> > list, say A, the same way that another list, say B, is partitioned.
> > One way to do this is
> > 
> > copyPartition[A_List, B_List] /; Length@A >= Length@Flatten@B :=
> >                               Module[{i = 0}, Map[A[[++i]]&,B,{-1}]]
> > 
> > But all the methods I've thought of have a pointer that functions
> > something like i in the above code. I'd like to eliminate the pointer,
> > because in the unlikely event that A contains an unevaluated symbol
> > that is the same as the name of the pointer with $ appended -- e.g.,
> > i$, if the pointer is i -- then in the returned list that symbol will
> > have a numeric value assigned to it. Unique[i] doesn't help. The
> > only solution I see is the probabilistic one of giving the pointer a
> > strange (random?) name that hopefully would be very unlikely to show
> > up as data. But that would be giving up. Does anyone have any ideas?
> > 
> Hi Ray,
> 
>   use Replace[]:
> 
> A={a,b,c,d,e};
> B={{1},{2,3},{{{4}},5}};
> 
> Ap=B/.Thread[Flatten[B]\[Rule]A]
> --> {{a},{b,c},{{{d}},e}}

No, that won't work. Try

  A={a,b,c,d,a};
  B={{1},{2,1},{{{3}},2}};

  Ap=B/.Thread[Flatten[B] -> A]

You get

  {{a}, {b, a}, {{{d}}, b}}

whereas I think the OP wanted

  {{a}, {b, c}, {{{d}}, a}}

Cheers,
Paul

_______________________________________________________________________
Paul Abbott                                      Phone:  61 8 6488 2734
School of Physics, M013                            Fax: +61 8 6488 1014
The University of Western Australia         (CRICOS Provider No 00126G)    
AUSTRALIA                               http://physics.uwa.edu.au/~paul


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