aboutsummaryrefslogtreecommitdiff
path: root/challenge-003/rob4t
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2019-04-10 13:10:10 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2019-04-10 13:10:10 +0100
commit4d2cc77cf47d2dea299bd4e910d47f45cf66857c (patch)
treeb4a61bf426ce01f8ddad3c04df8871263607ef8b /challenge-003/rob4t
parente57020f83c26d151fc8c2d8d8475d15138cde60a (diff)
downloadperlweeklychallenge-club-4d2cc77cf47d2dea299bd4e910d47f45cf66857c.tar.gz
perlweeklychallenge-club-4d2cc77cf47d2dea299bd4e910d47f45cf66857c.tar.bz2
perlweeklychallenge-club-4d2cc77cf47d2dea299bd4e910d47f45cf66857c.zip
- Moved solution by Robert Gratza to the correct folder.
Diffstat (limited to 'challenge-003/rob4t')
-rw-r--r--challenge-003/rob4t/README1
-rw-r--r--challenge-003/rob4t/perl6/ch-1.p622
-rw-r--r--challenge-003/rob4t/perl6/ch-2.p627
3 files changed, 50 insertions, 0 deletions
diff --git a/challenge-003/rob4t/README b/challenge-003/rob4t/README
new file mode 100644
index 0000000000..787d89fa0a
--- /dev/null
+++ b/challenge-003/rob4t/README
@@ -0,0 +1 @@
+Solution by Robert Gratza
diff --git a/challenge-003/rob4t/perl6/ch-1.p6 b/challenge-003/rob4t/perl6/ch-1.p6
new file mode 100644
index 0000000000..8e442553b0
--- /dev/null
+++ b/challenge-003/rob4t/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/rob4t/perl6/ch-2.p6 b/challenge-003/rob4t/perl6/ch-2.p6
new file mode 100644
index 0000000000..3d0b60786b
--- /dev/null
+++ b/challenge-003/rob4t/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;
+};