diff options
| -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..452c1bce17 --- /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 $number = 5) { + say get-hamming-sequence()[0..$number-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; +}; |
