aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrbaggy <js5@sanger.ac.uk>2021-12-03 08:11:35 +0000
committerdrbaggy <js5@sanger.ac.uk>2021-12-03 08:11:35 +0000
commitfb0b052f476665a5378dc85348fe987f50267cc7 (patch)
treea9bc49d468c62293e75cf5a82da2b68b363da0c2
parent5b2710ed8390fd90f652e6b9e064613dd90e630d (diff)
downloadperlweeklychallenge-club-fb0b052f476665a5378dc85348fe987f50267cc7.tar.gz
perlweeklychallenge-club-fb0b052f476665a5378dc85348fe987f50267cc7.tar.bz2
perlweeklychallenge-club-fb0b052f476665a5378dc85348fe987f50267cc7.zip
ch-2.pl solution at last
-rw-r--r--challenge-141/james-smith/perl/ch-2.pl28
1 files changed, 28 insertions, 0 deletions
diff --git a/challenge-141/james-smith/perl/ch-2.pl b/challenge-141/james-smith/perl/ch-2.pl
new file mode 100644
index 0000000000..5e4af7babb
--- /dev/null
+++ b/challenge-141/james-smith/perl/ch-2.pl
@@ -0,0 +1,28 @@
+#!/usr/local/bin/perl
+
+use strict;
+
+use warnings;
+use feature qw(say);
+use Test::More;
+use Benchmark qw(cmpthese timethis);
+use Data::Dumper qw(Dumper);
+
+my @TESTS = (
+ [ [1234,2], 9 ],
+ [ [ 768,4], 3 ],
+);
+
+is( like_numbers(@{$_->[0]}), $_->[1] ) foreach @TESTS;
+
+done_testing();
+
+sub like_numbers {
+ scalar grep { !($_%$_[1]) } get_nums( $_[0] );
+}
+
+sub get_nums {
+ my @nums = split //, my $m = shift;
+ return map { my $n=$_<<1; join '',grep{($n>>=1)&1} @nums } 1..(1<<@nums)-2;
+}
+