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

MathGroup Archive 2009

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

Search the Archive

Re: list/sequence problem: a 'keep' list to a list of

  • To: mathgroup at smc.vnet.net
  • Subject: [mg97186] Re: [mg97147] list/sequence problem: a 'keep' list to a list of
  • From: DrMajorBob <btreat1 at austin.rr.com>
  • Date: Sat, 7 Mar 2009 02:40:47 -0500 (EST)
  • References: <200903060926.EAA22779@smc.vnet.net>
  • Reply-to: drmajorbob at bigfoot.com

Sorry, that fails (with "dummy" as second argument to FoldList) if the  
first element of keepPrior is True.

You haven't specified what you want to do in that case, but maybe this  
would do:

keepPrior = {True, False, True, False, True, False, False, True, True,
     True, False, True};
counter = 0;
Rest@FoldList[(counter++;
     If[#2, Append[#1, counter], {counter}]) &, {}, keepPrior]

{{1}, {2}, {2, 3}, {4}, {4, 5}, {6}, {7}, {7, 8}, {7, 8, 9}, {7, 8, 9,
    10}, {11}, {11, 12}}

Bobby

On Fri, 06 Mar 2009 14:04:10 -0600, DrMajorBob <btreat1 at austin.rr.com>  
wrote:

> keepPrior = {False, True, False, True, False, False, True, True, True,
>      False, True};
> counter = 0;
> Rest@FoldList[(counter++; If[#2, Flatten@{#1, counter}, {counter}]) &,
>     dummy, keepPrior]
>
> {{1}, {1, 2}, {3}, {3, 4}, {5}, {6}, {6, 7}, {6, 7, 8}, {6, 7, 8,
>    9}, {10}, {10, 11}}
>
> or
>
> counter = 0;
> Rest@FoldList[(counter++; If[#2, Append[#1, counter], {counter}]) &,
>    dummy, keepPrior]
>
> {{1}, {1, 2}, {3}, {3, 4}, {5}, {6}, {6, 7}, {6, 7, 8}, {6, 7, 8,
>    9}, {10}, {10, 11}}
>
> Bobby
>
> On Fri, 06 Mar 2009 03:26:41 -0600, mkr <MilesKRains at gmail.com> wrote:
>
>> I have a list of Booleans, indicating whether prior values in sequence
>> are to be 'kept'.  I want to generate a list of accumulated 'kept'
>> positions for each position in the sequence.  The following code
>> works, but I would love to see a cleaner, more obivous approach.
>> Anyone?
>>
>> In[]=
>>
>> keepPrior=
>> {False,True,False,True,False,False,True,True,True,False,True};
>>
>> keptPriors=Function[aclist,If[Split[aclist][[-1,1]]==True,Range[Length
>> [aclist]-Length[Split[aclist][[-1]]],Length[aclist]],{Length
>> [aclist]}]]/@Rest[FoldList[Append,{},keepPrior]];
>>
>> TableForm[Transpose[{keepPrior,ToString/@keptPriors}],TableHeadings->
>> {Automatic,None}]
>>
>>
>> Out[]=
>>
>> 1	False	{1}
>> 2	True	{1, 2}
>> 3	False	{3}
>> 4	True	{3, 4}
>> 5	False	{5}
>> 6	False	{6}
>> 7	True	{6, 7}
>> 8	True	{6, 7, 8}
>> 9	True	{6, 7, 8, 9}
>> 10	False	{10}
>> 11	True	{10, 11}
>>
>>
>
>
>



-- 
DrMajorBob at bigfoot.com


  • Prev by Date: Re: Bug In LogPlots with WorkingPrecision option?
  • Next by Date: Re: Version problem with FindRoot
  • Previous by thread: Re: list/sequence problem: a 'keep' list to a list of
  • Next by thread: Re: list/sequence problem: a 'keep' list to a list of