diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2019-04-12 15:57:48 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-04-12 15:57:48 +0100 |
| commit | d11372ccda4be7bf9e8e815bea3dc3e4ea683b0a (patch) | |
| tree | 280336ad03f9c57213d0a730040e8e222fac6844 | |
| parent | cd228221a4df3c051541f3ca72e9f440693ad648 (diff) | |
| parent | 8acda7a92b5bc1288eafe4ef1a027c7a765b5b99 (diff) | |
| download | perlweeklychallenge-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-x | challenge-003/steve-rogerson/ch-1.pl | 29 |
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"; |
