diff options
Diffstat (limited to 'challenge-078')
| -rw-r--r-- | challenge-078/mohammad-anwar/raku/ch-1.raku | 40 | ||||
| -rw-r--r-- | challenge-078/mohammad-anwar/raku/ch-1.t | 46 |
2 files changed, 86 insertions, 0 deletions
diff --git a/challenge-078/mohammad-anwar/raku/ch-1.raku b/challenge-078/mohammad-anwar/raku/ch-1.raku new file mode 100644 index 0000000000..96def316d5 --- /dev/null +++ b/challenge-078/mohammad-anwar/raku/ch-1.raku @@ -0,0 +1,40 @@ +#!/usr/bin/env raku + +# +# Perl Weekly Challenge - 078 +# +# Task #1: Leader Element +# +# https://perlweeklychallenge.org/blog/perl-weekly-challenge-078 +# + +use v6.d; + +sub MAIN(Str :$L = "9, 10, 7, 5, 6, 1") { + leader-elements($L).join(", ").say; +} + +# +# +# METHOD + +sub leader-elements(Str $list) { + + die "ERROR: Invalid list [$list].\n" unless $list ~~ /^[\-?\d\,?\s?]+$/; + + my @array = $list.split(',').map: { .Int }; + my $index = 0; + my @leader-elements = Empty; + for @array -> $n { + if $index == @array.elems-1 { + @leader-elements.push: $n; + } + else { + @leader-elements.push: $n + if $n > @array[$index+1 .. @array.elems-1].max; + } + $index++; + } + + return |@leader-elements; +} diff --git a/challenge-078/mohammad-anwar/raku/ch-1.t b/challenge-078/mohammad-anwar/raku/ch-1.t new file mode 100644 index 0000000000..15a0468f7d --- /dev/null +++ b/challenge-078/mohammad-anwar/raku/ch-1.t @@ -0,0 +1,46 @@ +#!/usr/bin/env raku + +# +# Perl Weekly Challenge - 078 +# +# Task #1: Leader Element +# +# https://perlweeklychallenge.org/blog/perl-weekly-challenge-078 +# + +use Test; + +is-deeply leader-elements("9, 10, 7, 5, 6, 1"), + (10, 7, 6, 1), + "testing example 1"; + +is-deeply leader-elements("3, 4, 5"), + (5), + "testing example 2"; + +done-testing; + +# +# +# METHOD + +sub leader-elements(Str $list) { + + die "ERROR: Invalid list [$list].\n" unless $list ~~ /^[\-?\d\,?\s?]+$/; + + my @array = $list.split(',').map: { .Int }; + my $index = 0; + my @leader-elements = Empty; + for @array -> $n { + if $index == @array.elems-1 { + @leader-elements.push: $n; + } + else { + @leader-elements.push: $n + if $n > @array[$index+1 .. @array.elems-1].max; + } + $index++; + } + + return |@leader-elements; +} |
