aboutsummaryrefslogtreecommitdiff
path: root/challenge-113
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-113')
-rw-r--r--challenge-113/luca-ferrari/blog-1.txt1
-rw-r--r--challenge-113/luca-ferrari/blog-2.txt1
-rw-r--r--challenge-113/luca-ferrari/raku/ch-1.p610
-rw-r--r--challenge-113/luca-ferrari/raku/ch-2.p642
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;
+}