Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re: string functions

by holli (Monsignor)
on Oct 25, 2006 at 09:32 UTC ( #580521=note: print w/ replies, xml ) Need Help??


in reply to string functions

The following uses regexes and eval:

use strict; use warnings; my @p = (1.5, 2.5, 3.5 ); my @m = (0.5, 0.55, 0.60); my $a="2A2B2C"; sub calc { my $i = shift; my $j = ord(shift)-65; my $r = $p[$j]; $r *= $p[$j] for (0..$i-2); return $r * $m[$j]; } $a=~ s/([0-9]+)([A-Z])/(calc($1,"$2"))/g; $a=~ s/\)\(/)*(/g; eval "\$a = $a;"; print $a; #28.423828125


holli, /regexed monk/


Comment on Re: string functions
Download Code
Re^2: string functions
by valavanp (Curate) on Oct 25, 2006 at 09:47 UTC
    Thanks all perl monks for your answers in this node. The answer given by holli gets me the output. But i couldn't understand the code can anyone brief that. Thanks monks.
Re^2: string functions
by valavanp (Curate) on Oct 25, 2006 at 10:23 UTC
    your solution works for 2A2B2C. But for 4AC, ABC,BC it directly prints the string. your solutions.
      Is this what you want? Sorry, but your speccs are not very clear ...
      2A2B2C = 28.423828125 4AC = 5.315625 ABC = 2.165625 BC = 2.8875

      This was produces by the following code (adapted from holiy's solution):

      use strict; use warnings; my @p = (1.5, 2.5, 3.5 ); my @m = (0.5, 0.55, 0.60); sub calc { my $i = shift || 1; my $idx = ord(shift)-65; return $m[$idx] * ($p[$idx]**$i); } for my $str (qw/2A2B2C 4AC ABC BC/) { my $res = 1; while ($str =~ /(\d)?([A-Z])/g) { $res *= calc($1, $2); } print "$str = $res\n"; }

      -- Hofmator

      Code written by Hofmator and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.

        i have the str in an excel file which has approximately 400 entries like 4ABC,BC,3C,2BC,3B,5C,B2CD,3AB2C,3A,C,D... etc. But the maximum no. of characters is 6.How can i pass it.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://580521]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (6)
As of 2014-08-01 23:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Who would be the most fun to work for?















    Results (53 votes), past polls