aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2019-04-12 15:57:48 +0100
committerGitHub <noreply@github.com>2019-04-12 15:57:48 +0100
commitd11372ccda4be7bf9e8e815bea3dc3e4ea683b0a (patch)
tree280336ad03f9c57213d0a730040e8e222fac6844
parentcd228221a4df3c051541f3ca72e9f440693ad648 (diff)
parent8acda7a92b5bc1288eafe4ef1a027c7a765b5b99 (diff)
downloadperlweeklychallenge-club-d11372ccda4be7bf9e8e815bea3dc3e4ea683b0a.tar.gz
perlweeklychallenge-club-d11372ccda4be7bf9e8e815bea3dc3e4ea683b0a.tar.bz2
perlweeklychallenge-club-d11372ccda4be7bf9e8e815bea3dc3e4ea683b0a.zip
Merge pull request #45 from yewtc/master
Add my solution to week3 problem 1 perl5
-rwxr-xr-xchallenge-003/steve-rogerson/ch-1.pl29
1 files changed, 29 insertions, 0 deletions
diff --git a/challenge-003/steve-rogerson/ch-1.pl b/challenge-003/steve-rogerson/ch-1.pl
new file mode 100755
index 0000000000..e1378eaec3
--- /dev/null
+++ b/challenge-003/steve-rogerson/ch-1.pl
@@ -0,0 +1,29 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use List::Util 'min';
+use Const::Fast;
+use 5.010;
+
+
+sub hamming {
+ my ($arg) = @_;
+ $arg ||= 0; # pass 1 to restart.
+ state %s;
+ if (! %s or $arg ==1 ) {
+ %s = (1=>1); # 1 is the first hamming number.
+ }
+ my $next = min (keys %s);
+ delete $s{$next};
+ for (2,3,5) {
+ $s{$next * $_} = 1;
+ }
+ return $next;
+}
+
+my $i =0;
+++$i, print hamming(), " " until $i > 20;
+print "...\n";
+
+++$i, hamming() until $i == 1690;
+print ++$i, "-th: ", hamming(), "\n";