diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2021-05-18 10:48:56 +0200 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2021-05-18 13:34:49 +0200 |
| commit | 39fd73a451bc410f43aef7daeed51b039e9100f3 (patch) | |
| tree | d81352d6bf30b37bae703f82175c1ae5db0d2957 | |
| parent | ae9118a503373d2c9793456b95e2eb3ac643df8b (diff) | |
| download | perlweeklychallenge-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.p6 | 43 |
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; +} |
