aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2019-04-10 10:43:14 +0100
committerGitHub <noreply@github.com>2019-04-10 10:43:14 +0100
commite18516103328caf1bd59d53c19996b3de3b8609d (patch)
tree75176bdc42ca77fc8e22072bc1e708a5670e7092
parent46e6fd17e344dc68db086512faf91841035e4ba4 (diff)
parent6178a5ef5704c9fba04ea4466ecef91a05b4b0ff (diff)
downloadperlweeklychallenge-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/README1
-rw-r--r--challenge-003/robert-gratza/perl6/ch-1.p622
-rw-r--r--challenge-003/robert-gratza/perl6/ch-2.p627
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;
+};