diff options
| -rw-r--r-- | challenge-141/james-smith/perl/ch-2.pl | 28 |
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; +} + |
