diff options
| author | arnesom <arne@bbop.org> | 2020-09-18 22:20:37 +0200 |
|---|---|---|
| committer | arnesom <arne@bbop.org> | 2020-09-18 22:20:37 +0200 |
| commit | f0f3b8bf64608cedac1daeb107b72437c44585ab (patch) | |
| tree | a46379da3a0bbafa4c8a233bf4b4255ca35361c6 /challenge-078 | |
| parent | efad9ec67e425da2e42983948d78b1a348e104ed (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-078/arne-sommer/perl/ch-1.pl | 20 | ||||
| -rwxr-xr-x | challenge-078/arne-sommer/perl/ch-2.pl | 25 | ||||
| -rwxr-xr-x | challenge-078/arne-sommer/perl/leader-element-perl | 20 | ||||
| -rwxr-xr-x | challenge-078/arne-sommer/perl/left-rotation-perl | 25 | ||||
| -rwxr-xr-x | challenge-078/arne-sommer/raku/ch-1.p6 | 13 | ||||
| -rwxr-xr-x | challenge-078/arne-sommer/raku/ch-2.p6 | 11 | ||||
| -rwxr-xr-x | challenge-078/arne-sommer/raku/leader-element | 13 | ||||
| -rwxr-xr-x | challenge-078/arne-sommer/raku/left-rotation | 11 | ||||
| -rwxr-xr-x | challenge-078/arne-sommer/raku/left-rotation-1 | 6 | ||||
| -rwxr-xr-x | challenge-078/arne-sommer/raku/left-rotation-2 | 6 |
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 |
