aboutsummaryrefslogtreecommitdiff
path: root/challenge-078
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-078')
-rw-r--r--challenge-078/mohammad-anwar/raku/ch-1.raku40
-rw-r--r--challenge-078/mohammad-anwar/raku/ch-1.t46
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;
+}