aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-09-20 21:40:34 +0100
committerGitHub <noreply@github.com>2020-09-20 21:40:34 +0100
commitea61e4248cdec2843dc57db061c0577e2a6490be (patch)
treeaf006f91b3a59c3a0ee0c2e56b52c07e8091f782
parent4668637af9728017d9c214f3255e25b91922b799 (diff)
parent6fabd7602c1a36a5d7bc5808e9a230741a9b7f21 (diff)
downloadperlweeklychallenge-club-ea61e4248cdec2843dc57db061c0577e2a6490be.tar.gz
perlweeklychallenge-club-ea61e4248cdec2843dc57db061c0577e2a6490be.tar.bz2
perlweeklychallenge-club-ea61e4248cdec2843dc57db061c0577e2a6490be.zip
Merge pull request #2331 from juliodcs/juliodcs-develop
Solution to week 78 by juliodcs
-rw-r--r--challenge-078/juliodcs/README1
-rw-r--r--challenge-078/juliodcs/perl/ch-1.pl24
-rw-r--r--challenge-078/juliodcs/perl/ch-2.pl16
-rw-r--r--challenge-078/juliodcs/raku/ch-1.raku14
-rw-r--r--challenge-078/juliodcs/raku/ch-2.raku9
5 files changed, 64 insertions, 0 deletions
diff --git a/challenge-078/juliodcs/README b/challenge-078/juliodcs/README
new file mode 100644
index 0000000000..596a3da016
--- /dev/null
+++ b/challenge-078/juliodcs/README
@@ -0,0 +1 @@
+Solutions by Julio de Castro.
diff --git a/challenge-078/juliodcs/perl/ch-1.pl b/challenge-078/juliodcs/perl/ch-1.pl
new file mode 100644
index 0000000000..0d4c7e5caa
--- /dev/null
+++ b/challenge-078/juliodcs/perl/ch-1.pl
@@ -0,0 +1,24 @@
+#!perl
+
+use strict;
+use warnings;
+use List::Util qw(reduce);
+use experimental 'signatures';
+
+sub get_leaders {
+ my @A = ( 9, 10, 7, 5, 6, 1 );
+ my $a_indexes = sub { 0 .. @A - 1 };
+ my $is_last = sub($i) { $i == @A - 1 };
+ my $current = sub($i) { $A[$i] };
+ my $following = sub($i) { $A[$i + 1] };
+ my $is_leading = sub($i) { $current->($i) > $following->($i) };
+ my $is_leader = sub($i) { $is_last->($i) || $is_leading->($i) };
+ my $if_leader = sub($i) { $is_leader->($i) ? $current->($i) : () };
+ my $push_leader = sub($lst, $i) { push @{$lst}, $if_leader->($i); $lst };
+
+ my $result = reduce { $push_leader->($a, $b) } [], $a_indexes->();
+
+ @A == 0 ? (0) : $result->@*;
+}
+
+print join q(, ), get_leaders(); \ No newline at end of file
diff --git a/challenge-078/juliodcs/perl/ch-2.pl b/challenge-078/juliodcs/perl/ch-2.pl
new file mode 100644
index 0000000000..7dd29b2c82
--- /dev/null
+++ b/challenge-078/juliodcs/perl/ch-2.pl
@@ -0,0 +1,16 @@
+#!perl
+
+use strict;
+use warnings;
+use experimental 'signatures';
+use feature 'say';
+
+sub rotate {
+ my @A = (7, 4, 2, 6, 3);
+ my @B = (1, 3, 4);
+ for my $rot (@B) {
+ say join q(, ), map { $A[($_ + $rot) % @A] } 0 .. @A - 1;
+ }
+}
+
+rotate(); \ No newline at end of file
diff --git a/challenge-078/juliodcs/raku/ch-1.raku b/challenge-078/juliodcs/raku/ch-1.raku
new file mode 100644
index 0000000000..3687d224a0
--- /dev/null
+++ b/challenge-078/juliodcs/raku/ch-1.raku
@@ -0,0 +1,14 @@
+sub get-leaders {
+ my \A = ( 9, 10, 7, 5, 6, 1 );
+ sub is-last { $^i == A.elems - 1 }
+ sub current { A[$^i] }
+ sub following { A[$^i + 1] }
+ sub is-leading { current($^i) > following($^i) }
+ sub is-leader { is-last($^i) || is-leading($^i) }
+ sub if-leader { is-leader($^i) ?? current($^i) !! () }
+ sub add-leader { ($^list.flat, if-leader($^pos)).flat }
+
+ A.elems == 0 ?? (0) !! [[&add-leader]] ((), |^A)
+}
+
+say get-leaders;
diff --git a/challenge-078/juliodcs/raku/ch-2.raku b/challenge-078/juliodcs/raku/ch-2.raku
new file mode 100644
index 0000000000..723246e305
--- /dev/null
+++ b/challenge-078/juliodcs/raku/ch-2.raku
@@ -0,0 +1,9 @@
+sub rotate {
+ my \A = (7, 4, 2, 6, 3);
+ my \B = (1, 3, 4);
+ for B -> \rotation {
+ say (|^A).map: { A[ ($^index + rotation) % A.elems ] }
+ }
+}
+
+rotate; \ No newline at end of file