From 9cf2f9e81234d5eea3cd761e313780597d34ed1b Mon Sep 17 00:00:00 2001 From: Roger Bell_West Date: Mon, 14 Sep 2020 11:17:37 +0100 Subject: Solutions to challenge #78. --- challenge-078/roger-bell-west/perl/ch-1.pl | 23 +++++++++++++++++++++ challenge-078/roger-bell-west/perl/ch-2.pl | 28 ++++++++++++++++++++++++++ challenge-078/roger-bell-west/python/ch-1.py | 23 +++++++++++++++++++++ challenge-078/roger-bell-west/python/ch-2.py | 30 ++++++++++++++++++++++++++++ challenge-078/roger-bell-west/raku/ch-1.p6 | 22 ++++++++++++++++++++ challenge-078/roger-bell-west/raku/ch-2.p6 | 25 +++++++++++++++++++++++ 6 files changed, 151 insertions(+) create mode 100755 challenge-078/roger-bell-west/perl/ch-1.pl create mode 100755 challenge-078/roger-bell-west/perl/ch-2.pl create mode 100755 challenge-078/roger-bell-west/python/ch-1.py create mode 100755 challenge-078/roger-bell-west/python/ch-2.py create mode 100755 challenge-078/roger-bell-west/raku/ch-1.p6 create mode 100755 challenge-078/roger-bell-west/raku/ch-2.p6 (limited to 'challenge-078') diff --git a/challenge-078/roger-bell-west/perl/ch-1.pl b/challenge-078/roger-bell-west/perl/ch-1.pl new file mode 100755 index 0000000000..af59682d1b --- /dev/null +++ b/challenge-078/roger-bell-west/perl/ch-1.pl @@ -0,0 +1,23 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +use Test::More tests => 2; + +is_deeply(leader((9, 10, 7, 5, 6, 1)),[10, 7, 6, 1],'example 1'); +is_deeply(leader((3, 4, 5)),[5],'example 2'); + +sub leader { + my @t=reverse @_; + my $m; + my @o; + foreach my $c (@t) { + if (!defined $m || $c > $m) { + $m=$c; + push @o,$m; + } + } + @o=reverse @o; + return \@o; +} diff --git a/challenge-078/roger-bell-west/perl/ch-2.pl b/challenge-078/roger-bell-west/perl/ch-2.pl new file mode 100755 index 0000000000..8ce73675bf --- /dev/null +++ b/challenge-078/roger-bell-west/perl/ch-2.pl @@ -0,0 +1,28 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +use Test::More tests => 2; + +is_deeply(leftrot([10, 20, 30, 40, 50],[3, 4]), + [[40, 50, 10, 20, 30], + [50, 10, 20, 30, 40]], + 'example 1'); +is_deeply(leftrot([7, 4, 2, 6, 3],[1, 3, 4]), + [[4, 2, 6, 3, 7], + [6, 3, 7, 4, 2], + [3, 7, 4, 2, 6]], + 'example 2'); + +sub leftrot { + my $a=shift; + my $b=shift; + my $l=scalar(@{$a})-1; + my @t=(@{$a},@{$a}); + my @o; + foreach my $c (@{$b}) { + push @o,[@t[$c..$c+$l]]; + } + return \@o; +} diff --git a/challenge-078/roger-bell-west/python/ch-1.py b/challenge-078/roger-bell-west/python/ch-1.py new file mode 100755 index 0000000000..543adcec6f --- /dev/null +++ b/challenge-078/roger-bell-west/python/ch-1.py @@ -0,0 +1,23 @@ +#! /usr/bin/python + +import unittest + +def leader(a): + m=int() + o=list() + for c in (reversed(a)): + if (m==None or c > m): + m=c; + o.append(m) + o.reverse() + return o + +class TestLeader(unittest.TestCase): + + def test_ex1(self): + self.assertEqual(leader((9, 10, 7, 5, 6, 1)),[10, 7, 6, 1],'example 1') + + def test_ex2(self): + self.assertEqual(leader((3, 4, 5)),[5,],'example 2') + +unittest.main() diff --git a/challenge-078/roger-bell-west/python/ch-2.py b/challenge-078/roger-bell-west/python/ch-2.py new file mode 100755 index 0000000000..860ec393d6 --- /dev/null +++ b/challenge-078/roger-bell-west/python/ch-2.py @@ -0,0 +1,30 @@ +#! /usr/bin/python + +import unittest + +def leftrot(a,b): + l=len(a) + t=list() + map(t.append,a) + map(t.append,a) + o=list() + for c in (b): + o.append(list((t[c:c+l]))) + return o + +class TestLeftrot(unittest.TestCase): + + def test_ex1(self): + self.assertEqual(leftrot((10, 20, 30, 40, 50),(3, 4)), + [[40, 50, 10, 20, 30], + [50, 10, 20, 30, 40]], + 'example 1') + + def test_ex2(self): + self.assertEqual(leftrot((7, 4, 2, 6, 3),(1, 3, 4)), + [[4, 2, 6, 3, 7], + [6, 3, 7, 4, 2], + [3, 7, 4, 2, 6]], + 'example 2') + +unittest.main() diff --git a/challenge-078/roger-bell-west/raku/ch-1.p6 b/challenge-078/roger-bell-west/raku/ch-1.p6 new file mode 100755 index 0000000000..cbee39d88e --- /dev/null +++ b/challenge-078/roger-bell-west/raku/ch-1.p6 @@ -0,0 +1,22 @@ +#! /usr/bin/perl6 + +use Test; + +plan 2; + +is-deeply(leader((9, 10, 7, 5, 6, 1)),(10, 7, 6, 1),'example 1'); +is-deeply(leader((3, 4, 5)),(5,),'example 2'); + +sub leader(@a) { + my @t=reverse @a; + my $m; + my @o; + for @t -> $c { + if (!defined $m or $c > $m) { + $m=$c; + push @o,$m; + } + } + @o=reverse @o; + return @o.flat; +} diff --git a/challenge-078/roger-bell-west/raku/ch-2.p6 b/challenge-078/roger-bell-west/raku/ch-2.p6 new file mode 100755 index 0000000000..c539ca17a9 --- /dev/null +++ b/challenge-078/roger-bell-west/raku/ch-2.p6 @@ -0,0 +1,25 @@ +#! /usr/bin/perl6 + +use Test; + +plan 2; + +is-deeply(leftrot((10, 20, 30, 40, 50),(3, 4)), + [[40, 50, 10, 20, 30], + [50, 10, 20, 30, 40]], + 'example 1'); +is-deeply(leftrot((7, 4, 2, 6, 3),(1, 3, 4)), + [[4, 2, 6, 3, 7], + [6, 3, 7, 4, 2], + [3, 7, 4, 2, 6]], + 'example 2'); + +sub leftrot(@a,@b) { + my $l=@a.end; + my @t=(@a,@a).flat; + my @o; + for @b -> $c { + push @o,[@t[$c..$c+$l]]; + } + return @o; +} -- cgit