aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-09-19 12:50:14 +0100
committerGitHub <noreply@github.com>2020-09-19 12:50:14 +0100
commit2e47a82a7bf92e8f7e1034af1d50016f4c1cda87 (patch)
tree74e1492b868dfadad74128431fd90c1f72f46769
parent3b5da31652f26d7752e9a0a5a8c098090b38450a (diff)
parentf8351e3ab761d7dbe2d9691a85678b86469182de (diff)
downloadperlweeklychallenge-club-2e47a82a7bf92e8f7e1034af1d50016f4c1cda87.tar.gz
perlweeklychallenge-club-2e47a82a7bf92e8f7e1034af1d50016f4c1cda87.tar.bz2
perlweeklychallenge-club-2e47a82a7bf92e8f7e1034af1d50016f4c1cda87.zip
Merge pull request #2322 from LubosKolouch/chal_078_LK
Remove extra space
-rw-r--r--challenge-078/lubos-kolouch/perl/ch-1.pl33
-rw-r--r--challenge-078/lubos-kolouch/perl/ch-2.pl45
-rw-r--r--challenge-078/lubos-kolouch/python/ch-1.py43
-rw-r--r--challenge-078/lubos-kolouch/python/ch-2.py35
4 files changed, 156 insertions, 0 deletions
diff --git a/challenge-078/lubos-kolouch/perl/ch-1.pl b/challenge-078/lubos-kolouch/perl/ch-1.pl
new file mode 100644
index 0000000000..c25dc974c7
--- /dev/null
+++ b/challenge-078/lubos-kolouch/perl/ch-1.pl
@@ -0,0 +1,33 @@
+#!/bin/env perl
+# """ https://perlweeklychallenge.org/blog/perl-weekly-challenge-078/
+# Task 1
+# Leader Element
+# 19.9.2020 Lubos Kolouch """
+use strict;
+use warnings;
+
+sub process_list {
+ # """ Process the list and fill in leaders """
+ my $arr = shift;
+
+ return [] unless @$arr;
+
+ my @leaders;
+ push @leaders, @$arr[-1];
+
+ for my $elem (reverse @$arr) {
+ unshift @leaders, $elem if $elem > $leaders[0];
+ }
+
+ return \@leaders;
+
+}
+
+
+use Test::More;
+
+is_deeply(process_list([9, 10, 7, 5, 6, 1]), [10, 7, 6, 1], 'test 9, 10, 7, 5, 6, 1');
+is_deeply(process_list([3, 4, 5]), [5], 'test 3, 4, 5');
+is_deeply(process_list([]), [], 'test empty');
+
+done_testing;
diff --git a/challenge-078/lubos-kolouch/perl/ch-2.pl b/challenge-078/lubos-kolouch/perl/ch-2.pl
new file mode 100644
index 0000000000..b45646895d
--- /dev/null
+++ b/challenge-078/lubos-kolouch/perl/ch-2.pl
@@ -0,0 +1,45 @@
+#!/bin/env perl
+# """ https://perlweeklychallenge.org/blog/perl-weekly-challenge-078/
+# Task 2
+# Left Rotation
+# 19.9.2020 Lubos Kolouch """
+use strict;
+use warnings;
+
+sub rotate_arr {
+ # """ Process the list and fill in leaders """
+ my $argv = shift;
+ my $arr = $argv->{arr};
+ my $first = $argv->{first};
+
+ my @arr_copy = @$arr;
+ my @new_arr = (splice(@arr_copy, $first), @arr_copy);
+
+ return \@new_arr;
+}
+
+sub process_offsets {
+ my $argv = shift;
+ my $arr = $argv->{arr};
+ my $elems = $argv->{elems};
+
+ my @output;
+
+ for my $elem (@$elems) {
+ push @output, rotate_arr({ arr => $arr, first => $elem });
+ }
+
+ return \@output;
+}
+
+
+use Test::More;
+
+
+is_deeply(process_offsets({ arr => [10, 20, 30, 40, 50], elems => [3, 4] }),
+ [[40, 50, 10, 20, 30], [50, 10, 20, 30, 40]], 'test 10, 20, 30, 40, 50');
+
+is_deeply(process_offsets({ arr => [7, 4, 2, 6, 3], elems => [1, 3, 4] }),
+ [[4, 2, 6, 3, 7], [6, 3, 7, 4, 2], [3, 7, 4, 2, 6]], 'test 7, 4, 2, 6, 3');
+
+done_testing;
diff --git a/challenge-078/lubos-kolouch/python/ch-1.py b/challenge-078/lubos-kolouch/python/ch-1.py
new file mode 100644
index 0000000000..ef18c534ac
--- /dev/null
+++ b/challenge-078/lubos-kolouch/python/ch-1.py
@@ -0,0 +1,43 @@
+#!/bin/env python
+""" https://perlweeklychallenge.org/blog/perl-weekly-challenge-078/
+ Task 1
+ Leader Element
+ 19.9.2020 Lubos Kolouch """
+
+
+class LeaderElements:
+ """ Class to find Leader elements from a list """
+
+ def __init__(self, arr: list()):
+ self.arr = arr
+ self.leaders = list()
+
+ def process_list(self):
+ """ Process the list and fill in leaders """
+
+ if not self.arr:
+ return 0
+
+ self.leaders.insert(0, self.arr[-1])
+ for item in reversed(self.arr):
+ if item > self.leaders[0]:
+ self.leaders.insert(0, item)
+
+ return 1
+
+ def return_leaders(self):
+ """ Return the leaders list """
+ return self.leaders
+
+
+tester = LeaderElements([9, 10, 7, 5, 6, 1])
+tester.process_list()
+assert tester.return_leaders() == [10, 7, 6, 1]
+
+tester = LeaderElements([3, 4, 5])
+tester.process_list()
+assert tester.return_leaders() == [5]
+
+tester = LeaderElements([])
+tester.process_list()
+assert tester.return_leaders() == []
diff --git a/challenge-078/lubos-kolouch/python/ch-2.py b/challenge-078/lubos-kolouch/python/ch-2.py
new file mode 100644
index 0000000000..c1be12853b
--- /dev/null
+++ b/challenge-078/lubos-kolouch/python/ch-2.py
@@ -0,0 +1,35 @@
+#!/bin/env python
+""" https://perlweeklychallenge.org/blog/perl-weekly-challenge-078/
+ Task 2
+ Left Rotation
+ 19.9.2020 Lubos Kolouch """
+
+
+class ListRotator:
+ """ Rotate the array based on list of elems """
+
+ def __init__(self, arr: list(), elems: list()):
+ self.arr = arr
+ self.elems = elems
+
+ def rotate_arr(self, first: int):
+ """ Rotate the array so that passed elem is first """
+
+ return self.arr[first:] + self.arr[0:first]
+
+ def process_offset(self):
+ """ Process the list of elems for rotation """
+
+ output = list()
+
+ for elem in self.elems:
+ output.append(self.rotate_arr(elem))
+
+ return output
+
+
+test_list = ListRotator(arr=[10, 20, 30, 40, 50], elems=[3, 4])
+assert test_list.process_offset() == [[40, 50, 10, 20, 30], [50, 10, 20, 30, 40]]
+
+test_list = ListRotator(arr=[7, 4, 2, 6, 3], elems=[1, 3, 4])
+assert test_list.process_offset() == [[4, 2, 6, 3, 7], [6, 3, 7, 4, 2], [3, 7, 4, 2, 6]]