diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-04-14 19:36:33 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-04-14 19:36:33 +0100 |
| commit | 5b8f3461cc8a9e9431d22eeb31c9cf731cd3b016 (patch) | |
| tree | 7cffa5e9ea454880d497c66193b4bcb9a6cc947f | |
| parent | 9ba7eee05715182825a30fd37a5ca7723b2618dc (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rw-r--r-- | challenge-003/arne-sommer/perl6/ch-1.p6 | 26 | ||||
| -rw-r--r-- | challenge-003/arne-sommer/perl6/ch-2.p6 | 39 |
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(" "); + } +} + |
