aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-08-17 18:08:50 +0100
committerGitHub <noreply@github.com>2020-08-17 18:08:50 +0100
commit02925718b2c577129754e45ffe9bed6a9839bdca (patch)
treebe9a5c6df55ec1ff0ac368b91e0e6e337330ae3b
parent59fe91e4de35442c57e2142177bd169ab00aa42f (diff)
parente7b06cb2157015beeabb4a40152e3e0fb0b87745 (diff)
downloadperlweeklychallenge-club-02925718b2c577129754e45ffe9bed6a9839bdca.tar.gz
perlweeklychallenge-club-02925718b2c577129754e45ffe9bed6a9839bdca.tar.bz2
perlweeklychallenge-club-02925718b2c577129754e45ffe9bed6a9839bdca.zip
Merge pull request #2097 from Firedrake/rogerbw-challenge-074
Rogerbw challenge 074
-rwxr-xr-xchallenge-074/roger-bell-west/perl/ch-1.pl27
-rwxr-xr-xchallenge-074/roger-bell-west/perl/ch-2.pl31
-rwxr-xr-xchallenge-074/roger-bell-west/python/ch-1.py27
-rwxr-xr-xchallenge-074/roger-bell-west/python/ch-2.py28
-rwxr-xr-xchallenge-074/roger-bell-west/raku/ch-1.p624
-rwxr-xr-xchallenge-074/roger-bell-west/raku/ch-2.p629
6 files changed, 166 insertions, 0 deletions
diff --git a/challenge-074/roger-bell-west/perl/ch-1.pl b/challenge-074/roger-bell-west/perl/ch-1.pl
new file mode 100755
index 0000000000..767e6226bc
--- /dev/null
+++ b/challenge-074/roger-bell-west/perl/ch-1.pl
@@ -0,0 +1,27 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+use List::Util qw(max);
+
+use Test::More tests => 2;
+
+is(majority(1, 2, 2, 3, 2, 4, 2),
+ 2,
+ "example 1");
+is(majority(1, 3, 1, 2, 4, 5),
+ -1,
+ "example 2");
+
+sub majority {
+ my @list=@_;
+ my %s;
+ map {$s{$_}++} @list;
+ my $m=max(values %s);
+ if ($m > int((scalar @list)/2)) {
+ my %q=map {$s{$_} => $_} keys %s;
+ return $q{$m};
+ } else {
+ return -1;
+ }
+}
diff --git a/challenge-074/roger-bell-west/perl/ch-2.pl b/challenge-074/roger-bell-west/perl/ch-2.pl
new file mode 100755
index 0000000000..f0fcfbc5ef
--- /dev/null
+++ b/challenge-074/roger-bell-west/perl/ch-2.pl
@@ -0,0 +1,31 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 2;
+
+is(fnr('ababc'),
+ 'abb#c',
+ "example 1");
+is(fnr('xyzzyx'),
+ 'xyzyx#',
+ "example 2");
+
+sub fnr {
+ my $in=shift;
+ my %s;
+ my @s;
+ my @o;
+ foreach my $c (split '',$in) {
+ push @s,$c;
+ $s{$c}++;
+ @s=grep {$s{$_}<2} @s;
+ if (@s) {
+ push @o,$s[-1];
+ } else {
+ push @o,'#';
+ }
+ }
+ return join('',@o);
+}
diff --git a/challenge-074/roger-bell-west/python/ch-1.py b/challenge-074/roger-bell-west/python/ch-1.py
new file mode 100755
index 0000000000..483a169ff8
--- /dev/null
+++ b/challenge-074/roger-bell-west/python/ch-1.py
@@ -0,0 +1,27 @@
+#! /usr/bin/python3
+
+import unittest
+
+def majority(list):
+ s=dict()
+ for x in list:
+ s.setdefault(x,0)
+ s[x] += 1
+ m=max(s.values())
+ if m > int(len(list)/2):
+ q=dict()
+ for x in s.keys():
+ q[s[x]]=x
+ return q[m]
+ else:
+ return -1
+
+class TestMajority(unittest.TestCase):
+
+ def test_ex1(self):
+ self.assertEqual(majority((1, 2, 2, 3, 2, 4, 2)),2,'example 1')
+
+ def test_ex2(self):
+ self.assertEqual(majority((1, 3, 1, 2, 4, 5)),-1,'example 2')
+
+unittest.main()
diff --git a/challenge-074/roger-bell-west/python/ch-2.py b/challenge-074/roger-bell-west/python/ch-2.py
new file mode 100755
index 0000000000..cd065d950b
--- /dev/null
+++ b/challenge-074/roger-bell-west/python/ch-2.py
@@ -0,0 +1,28 @@
+#! /usr/bin/python3
+
+import unittest
+
+def fnr(i):
+ s=dict()
+ ls=list()
+ o=list()
+ for c in list(i):
+ ls.append(c)
+ s.setdefault(c,0)
+ s[c] += 1
+ ls=[x for x in ls if s[x]<2]
+ if len(ls)>0:
+ o.append(ls[len(ls)-1])
+ else:
+ o.append('#')
+ return ''.join(o)
+
+class TestMajority(unittest.TestCase):
+
+ def test_ex1(self):
+ self.assertEqual(fnr('ababc'),'abb#c','example 1')
+
+ def test_ex2(self):
+ self.assertEqual(fnr('xyzzyx'),'xyzyx#','example 2')
+
+unittest.main()
diff --git a/challenge-074/roger-bell-west/raku/ch-1.p6 b/challenge-074/roger-bell-west/raku/ch-1.p6
new file mode 100755
index 0000000000..642c3b88c7
--- /dev/null
+++ b/challenge-074/roger-bell-west/raku/ch-1.p6
@@ -0,0 +1,24 @@
+#! /usr/bin/perl6
+
+use Test;
+
+plan 2;
+
+is(majority((1, 2, 2, 3, 2, 4, 2)),
+ 2,
+ "example 1");
+is(majority((1, 3, 1, 2, 4, 5)),
+ -1,
+ "example 2");
+
+sub majority(@list) {
+ my %s;
+ map {%s{$_}++}, @list;
+ my $m=max(values %s);
+ if ($m > floor(@list.elems/2)) {
+ my %q=map {%s{$_} => $_},keys %s;
+ return %q{$m};
+ } else {
+ return -1;
+ }
+}
diff --git a/challenge-074/roger-bell-west/raku/ch-2.p6 b/challenge-074/roger-bell-west/raku/ch-2.p6
new file mode 100755
index 0000000000..318a9793e5
--- /dev/null
+++ b/challenge-074/roger-bell-west/raku/ch-2.p6
@@ -0,0 +1,29 @@
+#! /usr/bin/perl6
+
+use Test;
+
+plan 2;
+
+is(fnr('ababc'),
+ 'abb#c',
+ "example 1");
+is(fnr('xyzzyx'),
+ 'xyzyx#',
+ "example 2");
+
+sub fnr($in) {
+ my %s;
+ my @s;
+ my @o;
+ for $in.comb -> $c {
+ push @s,$c;
+ %s{$c}++;
+ @s=grep {%s{$_} < 2},@s;
+ if (@s) {
+ push @o,@s[@s.end];
+ } else {
+ push @o,'#';
+ }
+ }
+ return join('',@o);
+}