From ae9118a503373d2c9793456b95e2eb3ac643df8b Mon Sep 17 00:00:00 2001 From: Luca Ferrari Date: Tue, 18 May 2021 09:01:45 +0200 Subject: Task 1 done --- challenge-113/luca-ferrari/raku/ch-1.p6 | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 challenge-113/luca-ferrari/raku/ch-1.p6 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 } + } + +} -- cgit From 39fd73a451bc410f43aef7daeed51b039e9100f3 Mon Sep 17 00:00:00 2001 From: Luca Ferrari Date: Tue, 18 May 2021 10:48:56 +0200 Subject: Task 2 done --- challenge-113/luca-ferrari/raku/ch-2.p6 | 43 +++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 challenge-113/luca-ferrari/raku/ch-2.p6 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..35a9376210 --- /dev/null +++ b/challenge-113/luca-ferrari/raku/ch-2.p6 @@ -0,0 +1,43 @@ +#!raku + +class Node { + has Int $.value; + + has $.left is rw; + has $.right is rw; + + method sum() { + my $sum = $!value; + $sum += $!left.sum if ( $!left ); + $sum += $!right.sum if ( $!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; +} -- cgit From 3ee0b7ef523552853eedd4269e4346bd7460b591 Mon Sep 17 00:00:00 2001 From: Luca Ferrari Date: Tue, 18 May 2021 13:37:00 +0200 Subject: A more compact implementation of sum. --- challenge-113/luca-ferrari/raku/ch-2.p6 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/challenge-113/luca-ferrari/raku/ch-2.p6 b/challenge-113/luca-ferrari/raku/ch-2.p6 index 35a9376210..e181405599 100644 --- a/challenge-113/luca-ferrari/raku/ch-2.p6 +++ b/challenge-113/luca-ferrari/raku/ch-2.p6 @@ -8,8 +8,7 @@ class Node { method sum() { my $sum = $!value; - $sum += $!left.sum if ( $!left ); - $sum += $!right.sum if ( $!right ); + $sum += $_.sum if ( $_ ) for ( $!left, $!right ); return $sum; } -- cgit From d668267c357131cbe0012ab3b531d333937dedad Mon Sep 17 00:00:00 2001 From: Luca Ferrari Date: Tue, 18 May 2021 15:02:17 +0200 Subject: Blog references --- challenge-113/luca-ferrari/blog-1.txt | 1 + challenge-113/luca-ferrari/blog-2.txt | 1 + 2 files changed, 2 insertions(+) create mode 100644 challenge-113/luca-ferrari/blog-1.txt create mode 100644 challenge-113/luca-ferrari/blog-2.txt 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 -- cgit