aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;
+}
+