Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
1992
*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 1992

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

Search the Archive

Re: Flattening

  • To: mathgroup at yoda.physics.unc.edu
  • Subject: Re: Flattening
  • From: HAY at leicester.ac.uk
  • Date: Sun, 5 APR 92 21:51:19 GMT

I came in late on this and have not kept a record of the original 
question but does the following meet the specification?



finallist = (#//.{b___List} :> b)&/@startlist



It is OK on the examples that I have seen (I use Richard Gaylord's 
tests)

f[x_] := (#//.{b___List} :> b)&/@x
g[x_] := 
	FixedPoint[
      Replace[#,{A___,List[X___List],B___} :> {A,X,B}]&,
      x
  ]

startlist = {{a,a,a},{a,a},{{b,b},{b,b,b}},{a,a,a,a},{{b,b},{b}}}

f[startlist] === g[startlist]

True

and

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

True




And it is pretty fast:

longstartlist = Table[startlist, {20}];

f[longstartlist];//Timing

{0.4 Second, Null}

g[longstartlist];//Timing

{8.83333 Second, Null}

 

A final check 

f[longstartlist] === g[longstartlist]

True

From
Allan Hayes
Department of Mathematics
The University
Leicester LE1 7RH
U.K.
hay at leicester.ac.uk





  • Prev by Date: Re: Ceiling & Floor
  • Next by Date: Optics & Mma
  • Previous by thread: Re: Flattening
  • Next by thread: Re: Flattening