aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2019-04-14 19:36:33 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2019-04-14 19:36:33 +0100
commit5b8f3461cc8a9e9431d22eeb31c9cf731cd3b016 (patch)
tree7cffa5e9ea454880d497c66193b4bcb9a6cc947f
parent9ba7eee05715182825a30fd37a5ca7723b2618dc (diff)
downloadperlweeklychallenge-club-5b8f3461cc8a9e9431d22eeb31c9cf731cd3b016.tar.gz
perlweeklychallenge-club-5b8f3461cc8a9e9431d22eeb31c9cf731cd3b016.tar.bz2
perlweeklychallenge-club-5b8f3461cc8a9e9431d22eeb31c9cf731cd3b016.zip
- Added solutions by Arne Sommer.
-rw-r--r--challenge-003/arne-sommer/blog.txt1
-rw-r--r--challenge-003/arne-sommer/perl6/ch-1.p626
-rw-r--r--challenge-003/arne-sommer/perl6/ch-2.p639
3 files changed, 66 insertions, 0 deletions
diff --git a/challenge-003/arne-sommer/blog.txt b/challenge-003/arne-sommer/blog.txt
new file mode 100644
index 0000000000..5d63fc773d
--- /dev/null
+++ b/challenge-003/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://perl6.eu/regular-pascal.html
diff --git a/challenge-003/arne-sommer/perl6/ch-1.p6 b/challenge-003/arne-sommer/perl6/ch-1.p6
new file mode 100644
index 0000000000..9595572c91
--- /dev/null
+++ b/challenge-003/arne-sommer/perl6/ch-1.p6
@@ -0,0 +1,26 @@
+#! /usr/bin/env perl6
+
+sub MAIN (Int $limit where $limit > 0)
+{
+ my SetHash $solution = SetHash;
+
+ for 0 .. Inf -> $c
+ {
+ last if 5 ** $c > $limit;
+
+ for 0 .. Inf -> $b
+ {
+ last if 3 ** $b > $limit;
+
+ for 0 .. Inf -> $a
+ {
+ my $value = 2 ** $a * 3 ** $b * 5 ** $c;
+ last if $value > $limit;
+ $solution{$value} = True;
+ }
+ }
+ }
+
+ say $solution.keys.sort.join(" ");
+}
+
diff --git a/challenge-003/arne-sommer/perl6/ch-2.p6 b/challenge-003/arne-sommer/perl6/ch-2.p6
new file mode 100644
index 0000000000..7d2ccfb068
--- /dev/null
+++ b/challenge-003/arne-sommer/perl6/ch-2.p6
@@ -0,0 +1,39 @@
+#! /usr/bin/env perl6
+
+my $top = -1;
+
+subset Int3 of Int where * >= 3;
+
+#| size is an integer from 3 and upwards.
+sub MAIN (Int3 $size)
+{
+ my @values;
+ @values[1][$top +1] = 1;
+
+ for 2 .. $size -> $level
+ {
+ for 1 .. $level -> $current
+ {
+ my $id = $top - $level + $current * 2;
+ next if $id < 0;
+
+ @values[$level][$id] = (@values[$level -1][abs($id -1)] // 0)
+ + (@values[$level -1][$id +1] // 0);
+ }
+ }
+
+ for 1 .. $size -> $level
+ {
+ print " " x ($size - $level) * 3;
+ my @partial = @values[$level; *].grep( *.defined );
+
+ my @row = @partial.reverse;
+
+ @partial.pop if @values[$level;0].defined;
+
+ @row.append(@partial);
+
+ say @row.map( *.fmt('%3d') ).join(" ");
+ }
+}
+