aboutsummaryrefslogtreecommitdiff
path: root/challenge-078
diff options
context:
space:
mode:
authorarnesom <arne@bbop.org>2020-09-18 22:20:37 +0200
committerarnesom <arne@bbop.org>2020-09-18 22:20:37 +0200
commitf0f3b8bf64608cedac1daeb107b72437c44585ab (patch)
treea46379da3a0bbafa4c8a233bf4b4255ca35361c6 /challenge-078
parentefad9ec67e425da2e42983948d78b1a348e104ed (diff)
downloadperlweeklychallenge-club-f0f3b8bf64608cedac1daeb107b72437c44585ab.tar.gz
perlweeklychallenge-club-f0f3b8bf64608cedac1daeb107b72437c44585ab.tar.bz2
perlweeklychallenge-club-f0f3b8bf64608cedac1daeb107b72437c44585ab.zip
078 Arne Sommer
Diffstat (limited to 'challenge-078')
-rw-r--r--challenge-078/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-078/arne-sommer/perl/ch-1.pl20
-rwxr-xr-xchallenge-078/arne-sommer/perl/ch-2.pl25
-rwxr-xr-xchallenge-078/arne-sommer/perl/leader-element-perl20
-rwxr-xr-xchallenge-078/arne-sommer/perl/left-rotation-perl25
-rwxr-xr-xchallenge-078/arne-sommer/raku/ch-1.p613
-rwxr-xr-xchallenge-078/arne-sommer/raku/ch-2.p611
-rwxr-xr-xchallenge-078/arne-sommer/raku/leader-element13
-rwxr-xr-xchallenge-078/arne-sommer/raku/left-rotation11
-rwxr-xr-xchallenge-078/arne-sommer/raku/left-rotation-16
-rwxr-xr-xchallenge-078/arne-sommer/raku/left-rotation-26
11 files changed, 151 insertions, 0 deletions
diff --git a/challenge-078/arne-sommer/blog.txt b/challenge-078/arne-sommer/blog.txt
new file mode 100644
index 0000000000..de963d69a8
--- /dev/null
+++ b/challenge-078/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/rotating-leader.html
diff --git a/challenge-078/arne-sommer/perl/ch-1.pl b/challenge-078/arne-sommer/perl/ch-1.pl
new file mode 100755
index 0000000000..3c4ec7a456
--- /dev/null
+++ b/challenge-078/arne-sommer/perl/ch-1.pl
@@ -0,0 +1,20 @@
+#! /usr/bin/env perl
+
+use Perl6::Junction 'all';
+use feature 'say';
+
+my @A = @ARGV;
+
+die "Please specify at least one element" unless @A;
+
+die "Integers only" unless all(@A) == qr/^\d+$/;
+
+my @B;
+
+while (@A)
+{
+ my $a = shift @A;
+ push(@B, $a) if $a > all(@A);
+}
+
+say '(' . join(', ', @B) . ')';
diff --git a/challenge-078/arne-sommer/perl/ch-2.pl b/challenge-078/arne-sommer/perl/ch-2.pl
new file mode 100755
index 0000000000..2b60923289
--- /dev/null
+++ b/challenge-078/arne-sommer/perl/ch-2.pl
@@ -0,0 +1,25 @@
+#! /usr/bin/env perl
+
+use feature 'say';
+use feature 'signatures';
+use Perl6::Junction 'all';
+
+no warnings qw(experimental::signatures);
+
+my @A = split(" ", $ARGV[0]);
+my @B = split(" ", $ARGV[1]);
+
+die 'Specify @A' unless @A;
+die 'Specify @B' unless @B;
+
+die '@A must be positive numbers only' unless all(@A) > 0;
+die '@B must be legal indices only' unless 0 <= all(@B) && all(@B) <= $#A;
+
+map { say '[' . join(' ', do_rotate($_, @A)) . ']' } @B;
+
+sub do_rotate ($length, @array)
+{
+ push(@array, shift @array) for 1..$length;
+
+ return @array;
+}
diff --git a/challenge-078/arne-sommer/perl/leader-element-perl b/challenge-078/arne-sommer/perl/leader-element-perl
new file mode 100755
index 0000000000..3c4ec7a456
--- /dev/null
+++ b/challenge-078/arne-sommer/perl/leader-element-perl
@@ -0,0 +1,20 @@
+#! /usr/bin/env perl
+
+use Perl6::Junction 'all';
+use feature 'say';
+
+my @A = @ARGV;
+
+die "Please specify at least one element" unless @A;
+
+die "Integers only" unless all(@A) == qr/^\d+$/;
+
+my @B;
+
+while (@A)
+{
+ my $a = shift @A;
+ push(@B, $a) if $a > all(@A);
+}
+
+say '(' . join(', ', @B) . ')';
diff --git a/challenge-078/arne-sommer/perl/left-rotation-perl b/challenge-078/arne-sommer/perl/left-rotation-perl
new file mode 100755
index 0000000000..2b60923289
--- /dev/null
+++ b/challenge-078/arne-sommer/perl/left-rotation-perl
@@ -0,0 +1,25 @@
+#! /usr/bin/env perl
+
+use feature 'say';
+use feature 'signatures';
+use Perl6::Junction 'all';
+
+no warnings qw(experimental::signatures);
+
+my @A = split(" ", $ARGV[0]);
+my @B = split(" ", $ARGV[1]);
+
+die 'Specify @A' unless @A;
+die 'Specify @B' unless @B;
+
+die '@A must be positive numbers only' unless all(@A) > 0;
+die '@B must be legal indices only' unless 0 <= all(@B) && all(@B) <= $#A;
+
+map { say '[' . join(' ', do_rotate($_, @A)) . ']' } @B;
+
+sub do_rotate ($length, @array)
+{
+ push(@array, shift @array) for 1..$length;
+
+ return @array;
+}
diff --git a/challenge-078/arne-sommer/raku/ch-1.p6 b/challenge-078/arne-sommer/raku/ch-1.p6
new file mode 100755
index 0000000000..ba34b867ee
--- /dev/null
+++ b/challenge-078/arne-sommer/raku/ch-1.p6
@@ -0,0 +1,13 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@A where @A.elems && all(@A) ~~ Int);
+
+my @B;
+
+while (@A)
+{
+ my $a = @A.shift;
+ @B.push: $a if $a > all(@A);
+}
+
+say '(' ~ @B.join(', ') ~ ')';
diff --git a/challenge-078/arne-sommer/raku/ch-2.p6 b/challenge-078/arne-sommer/raku/ch-2.p6
new file mode 100755
index 0000000000..538f61c091
--- /dev/null
+++ b/challenge-078/arne-sommer/raku/ch-2.p6
@@ -0,0 +1,11 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Str $A, Str $B);
+
+my @A = $A.words;
+my @B = $B.words;
+
+die '@A must be positive numbers only' unless all(@A) > 0;
+die '@B must be legal indices only' unless 0 <= all(@B) <= @A.end;
+
+@B.map({ say '[' ~ @A.rotate($_).join(' ') ~ ']' }); \ No newline at end of file
diff --git a/challenge-078/arne-sommer/raku/leader-element b/challenge-078/arne-sommer/raku/leader-element
new file mode 100755
index 0000000000..ba34b867ee
--- /dev/null
+++ b/challenge-078/arne-sommer/raku/leader-element
@@ -0,0 +1,13 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@A where @A.elems && all(@A) ~~ Int);
+
+my @B;
+
+while (@A)
+{
+ my $a = @A.shift;
+ @B.push: $a if $a > all(@A);
+}
+
+say '(' ~ @B.join(', ') ~ ')';
diff --git a/challenge-078/arne-sommer/raku/left-rotation b/challenge-078/arne-sommer/raku/left-rotation
new file mode 100755
index 0000000000..538f61c091
--- /dev/null
+++ b/challenge-078/arne-sommer/raku/left-rotation
@@ -0,0 +1,11 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Str $A, Str $B);
+
+my @A = $A.words;
+my @B = $B.words;
+
+die '@A must be positive numbers only' unless all(@A) > 0;
+die '@B must be legal indices only' unless 0 <= all(@B) <= @A.end;
+
+@B.map({ say '[' ~ @A.rotate($_).join(' ') ~ ']' }); \ No newline at end of file
diff --git a/challenge-078/arne-sommer/raku/left-rotation-1 b/challenge-078/arne-sommer/raku/left-rotation-1
new file mode 100755
index 0000000000..85abf14f8b
--- /dev/null
+++ b/challenge-078/arne-sommer/raku/left-rotation-1
@@ -0,0 +1,6 @@
+#! /usr/bin/env raku
+
+my @A = (10, 20, 30, 40, 50);
+my @B = (3, 4);
+
+@B.map({ @A.rotate($_).say }); \ No newline at end of file
diff --git a/challenge-078/arne-sommer/raku/left-rotation-2 b/challenge-078/arne-sommer/raku/left-rotation-2
new file mode 100755
index 0000000000..61e391924f
--- /dev/null
+++ b/challenge-078/arne-sommer/raku/left-rotation-2
@@ -0,0 +1,6 @@
+#! /usr/bin/env raku
+
+my @A = (7, 4, 2, 6, 3);
+my @B = (1, 3, 4);
+
+@B.map({ @A.rotate($_).say }); \ No newline at end of file