Very nice, Bruce and Daniel!

I continued to hack on Rahakrishnan's code, then realized I could try
using Bruce's grep() call as a filter:

~$ raku -e '@*ARGS.words.grep(*.Rat).sum.say;'  100 200 300 apples
400oranges 2kilos 18.7876 500 grams14 10stars10 sun100moon 77
1195.7876

HTH, Bill.

On Mon, Aug 31, 2020 at 12:23 PM <dan...@codesections.com> wrote:
>
> I like Bruce's Regex-based approach.
>
> Here's how I'd probably approach the problem:
>
> raku -e 'say [+] @*ARGS.grep(+*)' 0 100 200 300 apples 400oranges 2kilos
> 18.7876 500 grams14 10stars10 sun100moon 77
>
> August 31, 2020 2:28 PM, "Bruce Gray" <robertbrucegr...@gmail.com> wrote:
>
> > my $is_a_number = / ^ \d+ [ '.' \d* ]? $ /;
> >
> > my $sum = @*ARGS.grep($is_a_number).sum;
> >
> > say $sum;
> >
> > —
> > Hope this helps,
> > Bruce Gray (Util of PerlMonks)
> >
> >> On Aug 31, 2020, at 12:22 PM, William Michels via perl6-users 
> >> <perl6-us...@perl.org> wrote:
> >>
> >> I think it looks very good, Radhakrishnan! Presumably you are happy
> >> with the sum 1195.7876?
> >>
> >> ~$ raku -e 'for @*ARGS {.say if ($_.Int // 0) };' 0 100 200 300 apples
> >> 400oranges 2kilos 18.7876 500 grams14 10stars10 sun100moon 77
> >> 100
> >> 200
> >> 300
> >> 18.7876
> >> 500
> >> 77
> >>
> >> I'm still mulling over whether or not the "!=== 0" is essential. I
> >> have yet to mess-up the command line arguments sufficiently to require
> >> it, and throwing a zero onto the command line seems to be handled
> >> gracefully.
> >>
> >> Anyone else want to chime in?
> >>
> >> Best, Bill.
> >>
> >> On Mon, Aug 31, 2020 at 8:49 AM Radhakrishnan Venkataraman
> >> <weor...@gmail.com> wrote:
> >>> Please see the following script that checks for type and sums up only the 
> >>> numbers passed as
> >>> arguments to the script in the command line. I would be grateful if any 
> >>> improvement or furtherance
> >>> to this script is offered. Thank you.
> >>>
> >>> #
> >>> # sums the numbers given in command line arguments and prints
> >>> #
> >>> my $sum = 0;
> >>> for @*ARGS
> >>> {
> >>> $sum += $_.Rat if $_.Int // 0 !=== 0;
> >>> }
> >>> say $sum;
> >>>
> >>> #
> >>> # command line execution
> >>> # perl6 cla.p6 100 200 300 apples 400oranges 2kilos 18.7876 500 grams14 
> >>> 10stars10 sun100moon 77
> >>> #

Reply via email to