From 8acda7a92b5bc1288eafe4ef1a027c7a765b5b99 Mon Sep 17 00:00:00 2001 From: Steve Rogerson Date: Fri, 12 Apr 2019 15:43:21 +0100 Subject: Add my solution to week3 problem 1 perl5 --- challenge-003/steve-rogerson/ch-1.pl | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100755 challenge-003/steve-rogerson/ch-1.pl 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"; -- cgit