MathGroup Archive 1997

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

Search the Archive

Re: Partition List

  • To: mathgroup at smc.vnet.net
  • Subject: [mg8455] Re: Partition List
  • From: Juergen.Schmidt at math.uni-giessen.de (Jürgen Schmidt)
  • Date: Sat, 30 Aug 1997 00:43:09 -0400
  • Organization: Math. Inst. der JLU Giessen
  • Sender: owner-wri-mathgroup at wolfram.com

In article <5tu41r$2b8 at smc.vnet.net>, "Xah" <xah at best.com> wrote:
>A question on programing.
>I want to partition a list, using special values in the list as boundary
>indicators. For example, myList={3,7,10,6,1,1,6,1,7,10,3,4,6} and my special
>value for boundary is 10, then my desired result would be
>result={{3,7},{10,6,1,1,6,1,7},{10,3,4,6}}.
>
>How to do this using structure manipulating operators, and how to do it with
>pattern matching? Thanks.
>
> Xah, xah at best.com
> http://www.best.com/~xah/SpecialPlaneCurves_dir/specialPlaneCurves.html
> Mountain View, CA, USA
>

The following is a possible solution (Note that the index is shifted by one 
due to the deletion of the first element in L which is not of interest)

Juergen





splitList[L_List, patt_] :=
        Module[{pos},  
     pos = 
      Flatten[    Position[  Delete[L, 1], patt , {1}, Heads -> False ]    ];
     (Take[L, #]&) /@
     Thread at {Prepend[pos + 1, 1], Append[pos, Length[L]]}
];


test1={3, 7, 10, 6, 1, 1, 6, 1, 7, 10, 3, 4, 6}; 


test2={a, 7, Pi, 6, a^a, EllipticK[1/2], x^2, 7, Sin[K], 3, 4, 3.14};



splitList[test1, 10]
        {{3,7},{10,6,1,1,6,1,7},{10,3,4,6}}

splitList[test1, 1]
        {{3,7,10,6},{1},{1,6},{1,7,10,3,4,6}}


splitList[test1, a_?OddQ]
        {{3},{7,10,6},{1},{1,6},{1},{7,10},{3,4,6}}

splitList[test1, a_?EvenQ]
        {{3,7},{10},{6,1,1},{6,1,7},{10,3},{4},{6}}

splitList[test2, a_?EvenQ]
        {{a,7,Pi},{6,a^a,EllipticK[1/2],x^2,7,Sin[K],3},{4,3.14}}

splitList[test2, a_?AtomQ]
        {{a},{7},{Pi},{6,a^a,EllipticK[1/2],x^2},{7,Sin[K]},{3},{4},{3.14}}

splitList[test2, a_Sin]
        {{a,7,Pi,6,a^a,EllipticK[1/2],x^2,7},{Sin[K],3,4,3.14}}

splitList[test2, a_?NumericQ]
        {{a},{7},{Pi},{6,a^a},{EllipticK[1/2],x^2},{7,Sin[K]},{3},{4},{3.14}}

splitList[test2, a_?NumberQ]
        {{a},{7,Pi},{6,a^a,EllipticK[1/2],x^2},{7,Sin[K]},{3},{4},{3.14}}



_/_/_/_/    _/_/  _/_/_/   _/_/_/   _/_/_/_/  _/_/   _/_/_/   _/_/_/
 _/_/
  _/_/      Dipl.-Phys. Juergen Schmidt
   _/_/       Mathematisches Institut (Math. Physik)
    _/_/_/     Justus-Liebig-Universitaet Giessen
     _/_/_/     Arndtstr. 2   *   D-35392 Giessen
      _/_/_/_/
     _/_/_/_/_/   phone ++49 (0) 641 99 320-64 (fax -29 / secr. -61)
    _/_/_/     
   _/_/      _/_/  Website Computeralgebra & Mathematical Physics:
  _/_/      _/_/  http://www.uni-giessen.de/www-Mathematische-Physik/
 _/_/_/_/
_/_/_/_/_/_/  _/_/_/    _/_/_/_/      _/_/_/_/_/        _/_/_/_/_/_/


  • Prev by Date: Re: Mma 2.2: Display and PostScript Question
  • Next by Date: Re: BarChart under math X 3.0.0.0x fails
  • Previous by thread: Re: Partition List
  • Next by thread: MathLink Question