aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Ferrari <fluca1978@gmail.com>2021-05-18 10:48:56 +0200
committerLuca Ferrari <fluca1978@gmail.com>2021-05-18 13:34:49 +0200
commit39fd73a451bc410f43aef7daeed51b039e9100f3 (patch)
treed81352d6bf30b37bae703f82175c1ae5db0d2957
parentae9118a503373d2c9793456b95e2eb3ac643df8b (diff)
downloadperlweeklychallenge-club-39fd73a451bc410f43aef7daeed51b039e9100f3.tar.gz
perlweeklychallenge-club-39fd73a451bc410f43aef7daeed51b039e9100f3.tar.bz2
perlweeklychallenge-club-39fd73a451bc410f43aef7daeed51b039e9100f3.zip
Task 2 done
-rw-r--r--challenge-113/luca-ferrari/raku/ch-2.p643
1 files changed, 43 insertions, 0 deletions
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;
+}