Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2010

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

Search the Archive

Re: working with lists

  • To: mathgroup at smc.vnet.net
  • Subject: [mg113224] Re: working with lists
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Tue, 19 Oct 2010 05:56:41 -0400 (EDT)
  • References: <201010180947.FAA00936@smc.vnet.net>

This uses pattern matching and recursion so it won't be particularly fast, but it seems to me the easiest way to program this sort of thing:

f[ls_List] /; ! MemberQ[Mod[ls, 3], 0] := ls
f[ls_List] :=
 ls /. {v___, u_ /; Mod[u, 3] == 0, w___} :>
   Flatten[{{v, 2 u}, f[{w} - 1]}]

In[5]:= f[{1,2,3,5,7}]
Out[5]= {1,2,6,4,12}

In[4]:= f[{1, 2, 3, 5, 7, 11, 12, 13, 14}]

Out[4]= {1,2,6,4,12,18,18,18,18}


Andrzej Kozlowski



On 18 Oct 2010, at 11:47, Sam Takoy wrote:

> Hi,
>
> I'm not very good at working with lists. May I ask for someone to work
> out an example which has several elements of what I need to do.
>
> What's the best way to write a function f[list] that goes through each
> element of the lest, doubles each element divisible by three and reduces
> each of the following elements by 1. That is
>
>
> f[{ 1 2 3 5 7}] is { 1 2 6 4 12 }
>
> Many thanks in advance,
>
> Sam
>



  • Prev by Date: Re: working with lists
  • Next by Date: Re: ListAnimate
  • Previous by thread: Re: working with lists
  • Next by thread: Re: working with lists