aboutsummaryrefslogtreecommitdiff
path: root/challenge-195
diff options
context:
space:
mode:
authorJames Smith <js5@sanger.ac.uk>2022-12-13 05:05:01 +0000
committerGitHub <noreply@github.com>2022-12-13 05:05:01 +0000
commit2b99b6e28c2a3b672e50d7b22cd3e1c6998670c7 (patch)
tree2841864753d2cbf29b34b579dca0d4efa23218a1 /challenge-195
parent60159b35ec059209d07879b604034f95f0751142 (diff)
downloadperlweeklychallenge-club-2b99b6e28c2a3b672e50d7b22cd3e1c6998670c7.tar.gz
perlweeklychallenge-club-2b99b6e28c2a3b672e50d7b22cd3e1c6998670c7.tar.bz2
perlweeklychallenge-club-2b99b6e28c2a3b672e50d7b22cd3e1c6998670c7.zip
Create ch-2.pl
Diffstat (limited to 'challenge-195')
-rw-r--r--challenge-195/james-smith/perl/ch-2.pl23
1 files changed, 23 insertions, 0 deletions
diff --git a/challenge-195/james-smith/perl/ch-2.pl b/challenge-195/james-smith/perl/ch-2.pl
new file mode 100644
index 0000000000..592ee325c4
--- /dev/null
+++ b/challenge-195/james-smith/perl/ch-2.pl
@@ -0,0 +1,23 @@
+#!/usr/local/bin/perl
+
+use strict;
+use warnings;
+use feature qw(say);
+use Test::More;
+use Benchmark qw(cmpthese timethis);
+
+my @TESTS = (
+ [ [ 1,1,2,6,2 ] => 2 ],
+ [ [ 1,3,5,7 ] => -1 ],
+ [ [ 6,4,4,6,1 ] => 4 ],
+);
+
+is( mf_even( @{$_->[0]} ), $_->[1] ) for @TESTS;
+done_testing();
+
+sub mf_even {
+ my($m,$v,%f)=(-1,-1);
+ $_%2 || $f{$_}++ for @_; ## Compute frequencies
+ ( $f{$_}>$v || $f{$_}==$v && $_<$m ) && ( $m=$_,$v=$f{$_} ) for keys %f;
+ $m
+}