diff options
Diffstat (limited to 'challenge-113')
| -rw-r--r-- | challenge-113/luca-ferrari/blog-1.txt | 1 | ||||
| -rw-r--r-- | challenge-113/luca-ferrari/blog-2.txt | 1 | ||||
| -rw-r--r-- | challenge-113/luca-ferrari/raku/ch-1.p6 | 10 | ||||
| -rw-r--r-- | challenge-113/luca-ferrari/raku/ch-2.p6 | 42 |
4 files changed, 54 insertions, 0 deletions
diff --git a/challenge-113/luca-ferrari/blog-1.txt b/challenge-113/luca-ferrari/blog-1.txt new file mode 100644 index 0000000000..334e584517 --- /dev/null +++ b/challenge-113/luca-ferrari/blog-1.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2021/05/18/PerlWeeklyChallenge113.html#task1 diff --git a/challenge-113/luca-ferrari/blog-2.txt b/challenge-113/luca-ferrari/blog-2.txt new file mode 100644 index 0000000000..2167806f85 --- /dev/null +++ b/challenge-113/luca-ferrari/blog-2.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2021/05/18/PerlWeeklyChallenge113.html#task2 diff --git a/challenge-113/luca-ferrari/raku/ch-1.p6 b/challenge-113/luca-ferrari/raku/ch-1.p6 new file mode 100644 index 0000000000..f47a511d54 --- /dev/null +++ b/challenge-113/luca-ferrari/raku/ch-1.p6 @@ -0,0 +1,10 @@ +#!raku + +sub MAIN( Int $N where { $N > 0 }, + Int $D where { $D >= 0 && $D.Str.chars == 1 } ) { + given (1 ..^ $N).grep( * ~~ / $D /).sum { + when $N { '1'.say } + default { '0'.say } + } + +} diff --git a/challenge-113/luca-ferrari/raku/ch-2.p6 b/challenge-113/luca-ferrari/raku/ch-2.p6 new file mode 100644 index 0000000000..e181405599 --- /dev/null +++ b/challenge-113/luca-ferrari/raku/ch-2.p6 @@ -0,0 +1,42 @@ +#!raku + +class Node { + has Int $.value; + + has $.left is rw; + has $.right is rw; + + method sum() { + my $sum = $!value; + $sum += $_.sum if ( $_ ) for ( $!left, $!right ); + return $sum; + } + + method map( &block ) { + self.new: value => block( $!value ), + left => $!left.map( &block ), + right => $!right.map( &block ); + } + + method say() { + "{ $!value }".say; + "\t Left = { $!left.value }".say if $!left; + "\t Right = { $!right.value }".say if $!right; + + $!left.say if $!left; + $!right.say if $!right; + } + + +} + +sub MAIN() { + + my $root = Node.new: + value => 1 + , left => Node.new( value => 2, left => Node.new( value => 4, left => Node.new( value => 7 ) ) ) + , right => Node.new( value => 3, left => Node.new( value => 5 ), right => Node.new( value => 6 ) ); + + $root = $root.map: { $root.sum - $_ if $_ }; + $root.say; +} |
