diff options
| -rwxr-xr-x | challenge-074/roger-bell-west/perl/ch-1.pl | 27 | ||||
| -rwxr-xr-x | challenge-074/roger-bell-west/perl/ch-2.pl | 31 | ||||
| -rwxr-xr-x | challenge-074/roger-bell-west/python/ch-1.py | 27 | ||||
| -rwxr-xr-x | challenge-074/roger-bell-west/python/ch-2.py | 28 | ||||
| -rwxr-xr-x | challenge-074/roger-bell-west/raku/ch-1.p6 | 24 | ||||
| -rwxr-xr-x | challenge-074/roger-bell-west/raku/ch-2.p6 | 29 |
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); +} |
