diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2019-04-10 10:43:14 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-04-10 10:43:14 +0100 |
| commit | e18516103328caf1bd59d53c19996b3de3b8609d (patch) | |
| tree | 75176bdc42ca77fc8e22072bc1e708a5670e7092 | |
| parent | 46e6fd17e344dc68db086512faf91841035e4ba4 (diff) | |
| parent | 6178a5ef5704c9fba04ea4466ecef91a05b4b0ff (diff) | |
| download | perlweeklychallenge-club-e18516103328caf1bd59d53c19996b3de3b8609d.tar.gz perlweeklychallenge-club-e18516103328caf1bd59d53c19996b3de3b8609d.tar.bz2 perlweeklychallenge-club-e18516103328caf1bd59d53c19996b3de3b8609d.zip | |
Merge pull request #40 from Rob4t/master
solution for challenge 3
| -rw-r--r-- | challenge-003/robert-gratza/README | 1 | ||||
| -rw-r--r-- | challenge-003/robert-gratza/perl6/ch-1.p6 | 22 | ||||
| -rw-r--r-- | challenge-003/robert-gratza/perl6/ch-2.p6 | 27 |
3 files changed, 50 insertions, 0 deletions
diff --git a/challenge-003/robert-gratza/README b/challenge-003/robert-gratza/README new file mode 100644 index 0000000000..787d89fa0a --- /dev/null +++ b/challenge-003/robert-gratza/README @@ -0,0 +1 @@ +Solution by Robert Gratza diff --git a/challenge-003/robert-gratza/perl6/ch-1.p6 b/challenge-003/robert-gratza/perl6/ch-1.p6 new file mode 100644 index 0000000000..8e442553b0 --- /dev/null +++ b/challenge-003/robert-gratza/perl6/ch-1.p6 @@ -0,0 +1,22 @@ +#!/usr/bin/env perl6 +use v6; + +subset PositiveInt of Int where { $^n >= 0} + +sub MAIN(PositiveInt $amount = 5) { + say get-hamming-sequence()[0..$amount-1]; +} + +sub get-hamming-sequence() { + return lazy gather { take $_ if is-hamming-number($_) for 1..Inf }; +} + +sub is-hamming-number(PositiveInt $number is copy --> Bool) { + return True if $number == 1; + + for 2,3,5 -> $divisor { + return is-hamming-number($number div $divisor) if $number %% $divisor; + } + + return False; +}; diff --git a/challenge-003/robert-gratza/perl6/ch-2.p6 b/challenge-003/robert-gratza/perl6/ch-2.p6 new file mode 100644 index 0000000000..3d0b60786b --- /dev/null +++ b/challenge-003/robert-gratza/perl6/ch-2.p6 @@ -0,0 +1,27 @@ +#!/usr/bin/env perl6 +use v6; + +subset PositiveInt of Int where { $^n >= 0} +subset IntBigger3 of Int where { $^n >= 3} + +sub MAIN(IntBigger3 $rows) { + for 0..$rows-1 -> $i { + for 0 .. $i -> $j { + print " " if $j; + print get-binomial-coefficient($i, $j); + } + print "\n"; + } +} + +sub get-binomial-coefficient( PositiveInt $n is copy, PositiveInt $k is copy --> Int ) { + return 1 if $k == 0; + if (2*$k) > $n { + $k = $n - $k; + }; + my $r = 1; + for 1..$k { + $r = $r * ( $n - $k + $_ ) / $_; + } + return $r.Int; +}; |
