[Date Index]
[Thread Index]
[Author Index]
Re: Tilting at Windmills?
*To*: mathgroup at smc.vnet.net
*Subject*: [mg62150] Re: Tilting at Windmills?
*From*: Bill Rowe <readnewsciv at earthlink.net>
*Date*: Sat, 12 Nov 2005 03:33:04 -0500 (EST)
*Sender*: owner-wri-mathgroup at wolfram.com
On 11/11/05 at 2:52 AM, anonmous69 at netscape.net (Matt) wrote:
>Where there's a chance of success, I tend to agonize over details of
>implementation. Memory usage is one such area. Here is a
>statement of a problem I was trying to solve in Mathematica:
>Given a list of the following form:{x1,x2,x3,...,xn-1,xn} I want to
>develop an algorithm that will iterate over the input list to
>produce output of the following
>form:{x1,x2,x2,x2,x2,x3,x3,x3,x3,x4,x4,x4,x4,x5,...,xn-2,xn-1,xn-1,
>xn-1,xn-1,xn} which will then need to be partitioned to end up in
>the following form:
>{{x1,x2},{x2,x2},{x2,x3},{x3,x3},{x3,x4},{x4,x4},{x4,x5},...,{xn-2,
>xn-1},{xn-1,xn-1},{xn-1,xn}} which means that if I had a flattened
>list of length'n' as input, then the new flattened list would have
>a length of 4*(n-2)+2
>Here is my first solution to this problem, along with a test
>harness for validation:
<code snipped>
Your code to do what you wanted seemed more complex than needed. By making use of the third aguement to Partition you can create the list you wanted with
f[x_] := Partition[Flatten@Partition[x, 2, 1], 2, 1]
A quick check
In[12]:=f[{x1, x2, x3, x4}]
Out[12]=
{{x1, x2}, {x2, x2}, {x2, x3}, {x3, x3}, {x3, x4}}
shows f works as desired
And a check of the timing
In[17]:=data = Range[200000];
In[18]:=Timing[f[data];][[1]]
Out[18]=0.21 Second
An alternative that runs faster but is perhaps less obvious is
h[x_] := Module[
{z = Flatten@Transpose@{Most[x], Rest[x]}},
Transpose@{Most[z], Rest[z]}]]
checking
In[20]:=h[data] == f[data]
Out[20]=True
In[21]:=Timing[h[data];][[1]]
Out[21]=0.11 Second
--
To reply via email subtract one hundred and four
Prev by Date:
**Re: Re: Re: integer solution**
Next by Date:
**Re: Re: Plot Angle between Vectors**
Previous by thread:
**Re: Tilting at Windmills?**
Next by thread:
**Re: Tilting at Windmills?**
| |