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: "In progress" saving of data collected using Reap/Sow

  • To: mathgroup at smc.vnet.net
  • Subject: [mg66312] Re: "In progress" saving of data collected using Reap/Sow
  • From: Maxim <m.r at inbox.ru>
  • Date: Tue, 9 May 2006 02:35:06 -0400 (EDT)
  • References: <e2v5pu$n64$1@smc.vnet.net><e36vft$n7c$1@smc.vnet.net> <e39k5i$cn9$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

On Wed, 3 May 2006 06:55:46 +0000 (UTC), Ray Koopman <koopman at sfu.ca>  
wrote:

> Expanding on my previous post, here are three ways to unravel z into
> a simple list of all the past results. The first way is fastest, but
> doesn't work if each result itself is a list.
>
> In[1]:= n = 8
>         y = {}; Do[AppendTo[y,result[i]],{i,n}]; y
>         z = {}; Do[z = {z,result[i]},{i,n}]; z
>         Flatten[z] === y
>         Nest[FlattenAt[#,1]&,z,n] === y
>         Table[Last@Nest[First,z,n-i],{i,n}] === y
>
> Out[1]= 8
> Out[2]= {result[1],result[2],result[3],result[4],
>          result[5],result[6],result[7],result[8]}
> Out[3]= {{{{{{{{{},result[1]},result[2]},result[3]},result[4]},
>                    result[5]},result[6]},result[7]},result[8]}
> Out[4]= True
> Out[5]= True
> Out[6]= True
>
> In[7]:= n = 8
>         y = {}; Do[AppendTo[y,{i,-i}],{i,n}]; y
>         z = {}; Do[z = {z,{i,-i}},{i,n}]; z
>         Flatten[z] === y
>         Nest[FlattenAt[#,1]&,z,n] === y
>         Table[Last@Nest[First,z,n-i],{i,n}] === y
>
> Out[7]= 8
> Out[8]= {{1,-1},{2,-2},{3,-3},{4,-4},
>          {5,-5},{6,-6},{7,-7},{8,-8}}
> Out[9]= {{{{{{{{{},{1,-1}},{2,-2}},{3,-3}},{4,-4}},
>                    {5,-5}},{6,-6}},{7,-7}},{8,-8}}
> Out[10]= False
> Out[11]= True
> Out[12]= True
>

Two heads are better than one:

In[1]:= z = h[]; Do[z = h[z, {i, -i}], {i, 10^5}] // Timing

Out[1]= {0.188*Second, Null}

In[2]:= (z = List @@ Flatten[z, Infinity, h];) // Timing

Out[2]= {0.062*Second, Null}

Maxim Rytin
m.r at inbox.ru


  • Prev by Date: Re: creating a symbolic square symmetric matrix
  • Next by Date: Re: 3D surface plotting
  • Previous by thread: Re: "In progress" saving of data collected using Reap/Sow
  • Next by thread: Re: Limit bug?