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 > >>> #