Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.math.mathematica

Topic: altering each member of a list that matches a certain pattern
Replies: 9   Last Post: Jun 22, 2012 3:03 AM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Christoph Lhotka

Posts: 39
Registered: 2/9/12
Re: altering each member of a list that matches a certain pattern
Posted: Jun 21, 2012 5:23 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

Hello,

the functional approach (Method 1) is beautiful, a simple rule based
approach would be

list /. x_Integer :> SuperStar[x] /; x > 9

Your Method 2 looks a little bit complex for the simple task to be done.

Best,

Christoph

On 06/20/2012 09:51 AM, Jason Ebaugh wrote:
> Good people,
>
>
> I need to alter each member of a list that matches a certain pattern.
> However, I need the whole list back, in its original order.
> So Cases[] on its own doesn't do the trick.
>
> Here is a toy example that is analogous to my real problem:
> Put an asterisk on each value that is 10 or greater in the following list.
>
> list = RandomSample[Range[20], 20]
>
> Out[1]= {19, 16, 5, 13, 10, 20, 1, 3, 18, 8, 9, 6, 12, 7, 4, 15, 11, 14, 2, 17}
>
> I came up with two ways to do this.
> However, I feel like I may be missing a simpler, single function way to do this.
>
> Method 1:
> If[#> 9, SuperStar[#], #]& /@ list
>
> Out[2]= {SuperStar[19], SuperStar[16], 5, SuperStar[13], SuperStar[10],
> SuperStar[20], 1, 3, SuperStar[18], 8, 9, 6, SuperStar[12], 7, 4,
> SuperStar[15], SuperStar[11], SuperStar[14], 2, SuperStar[17]}
>
>
> Method 2:
> ReplacePart[list,
> Table[{Position[list, x_ /; x> 9][[i, 1]] ->
> Map[SuperStar, Cases[list, x_ /; x> 9]][[i]]}, {i,
> Length[Cases[list, x_ /; x> 9]]}] // Flatten]
>
> Out[3]= {SuperStar[19], SuperStar[16], 5, SuperStar[13], SuperStar[10],
> SuperStar[20], 1, 3, SuperStar[18], 8, 9, 6, SuperStar[12], 7, 4,
> SuperStar[15], SuperStar[11], SuperStar[14], 2, SuperStar[17]}
>
>
> Am I missing a more straightforward way to do this?
>
>
>
> Thanks,
> Jason
>
>
> Jason Ebaugh
>






Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.