aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-07-06 14:02:40 +0100
committerGitHub <noreply@github.com>2020-07-06 14:02:40 +0100
commit89bdd758305a10634356a2b4a1104a3bf4e61890 (patch)
tree89916550378f5ef084e6d69313b0c4b4645fb2ad
parent4a4ce856c993b347807707a6021bc8fc9e8921b7 (diff)
parentd8f92b3ba81c1a3ccd9fa3f6ffc61381e7f6838a (diff)
downloadperlweeklychallenge-club-89bdd758305a10634356a2b4a1104a3bf4e61890.tar.gz
perlweeklychallenge-club-89bdd758305a10634356a2b4a1104a3bf4e61890.tar.bz2
perlweeklychallenge-club-89bdd758305a10634356a2b4a1104a3bf4e61890.zip
Merge pull request #1911 from fluca1978/pwc68
Pwc68
-rw-r--r--challenge-068/luca-ferrari/blog-1.txt1
-rw-r--r--challenge-068/luca-ferrari/blog-2.txt1
-rw-r--r--challenge-068/luca-ferrari/raku/ch-1.p635
-rw-r--r--challenge-068/luca-ferrari/raku/ch-2.p652
4 files changed, 89 insertions, 0 deletions
diff --git a/challenge-068/luca-ferrari/blog-1.txt b/challenge-068/luca-ferrari/blog-1.txt
new file mode 100644
index 0000000000..f1b4eafe0c
--- /dev/null
+++ b/challenge-068/luca-ferrari/blog-1.txt
@@ -0,0 +1 @@
+https://fluca1978.github.io/2020/07/06/PerlWeeklyChallenge68.html#task1
diff --git a/challenge-068/luca-ferrari/blog-2.txt b/challenge-068/luca-ferrari/blog-2.txt
new file mode 100644
index 0000000000..fef19560a5
--- /dev/null
+++ b/challenge-068/luca-ferrari/blog-2.txt
@@ -0,0 +1 @@
+https://fluca1978.github.io/2020/07/06/PerlWeeklyChallenge68.html#task2
diff --git a/challenge-068/luca-ferrari/raku/ch-1.p6 b/challenge-068/luca-ferrari/raku/ch-1.p6
new file mode 100644
index 0000000000..47d3530ec5
--- /dev/null
+++ b/challenge-068/luca-ferrari/raku/ch-1.p6
@@ -0,0 +1,35 @@
+#!raku
+
+# You are given a matrix of size M x N having only 0s and 1s.
+#
+# Write a script to set the entire row and column to 0 if an element is 0.
+
+sub print-matrix( @matrix, $m, $n ){
+ say "----" ~ "--" x $m;
+ for 0 ..^ $m -> $row {
+ print "| ";
+ for 0 ..^ $n -> $column {
+ print "@matrix[ ( $row * $m ) + $column ] ";
+ }
+ say " |";
+ }
+ say "----" ~ "--" x $m;
+}
+
+
+sub MAIN( Int $m, Int $n, *@incoming-matrix ) {
+ my @matrix = @incoming-matrix;
+ "Original matrix was ".say;
+ print-matrix( @incoming-matrix, $m, $n );
+ my @zeros = @matrix.grep( * == 0, :k );
+
+ for @zeros -> $zero-at {
+ my ( $row, $column ) = ( $zero-at - 1 / $m ).Int, ( $zero-at % $n ).Int;
+ @matrix[ $_ + $row ] = 0 for 0 ..^ $m; # zero the rows
+ @matrix[ $column + ( $_ * $m ) ] = 0 for 0 ..^ $n; # zero the columns
+ }
+
+ "Transformed matrix is".say;
+ print-matrix( @matrix, $m, $n );
+
+}
diff --git a/challenge-068/luca-ferrari/raku/ch-2.p6 b/challenge-068/luca-ferrari/raku/ch-2.p6
new file mode 100644
index 0000000000..c8e92d20a9
--- /dev/null
+++ b/challenge-068/luca-ferrari/raku/ch-2.p6
@@ -0,0 +1,52 @@
+#!raku
+
+class Node {
+ has Str $.value is rw;
+ has Node $.next is rw;
+}
+
+
+sub MAIN() {
+ # build the list
+ my Node $root = Node.new( :value( "L0" ) );
+ my Node $current-node = $root;
+ for 0 ^..^ 10 {
+ $current-node.next = Node.new( :value( "L$_" ) );
+ $current-node = $current-node.next;
+ }
+
+
+
+ # convert into an array
+ my @nodes;
+ $current-node = $root;
+ while ( $current-node ) {
+ @nodes.push: $current-node;
+ $current-node = $current-node.next;
+ }
+
+
+ # sort into another array
+ my @new-nodes;
+ for 0 ..^ @nodes.elems / 2 {
+ "switching elements $_ and { @nodes.elems - $_ - 1 }".say;
+ @new-nodes.push: @nodes[ $_ ];
+ @new-nodes.push: @nodes[ @nodes.elems - $_ -1 ];
+
+ }
+
+ # debug printing
+ # for 0 ..^ @new-nodes.elems {
+ # say @new-nodes[ $_ ].value;
+ # }
+
+ # now adjust linked references
+ for 0 ..^ @new-nodes.elems - 1 {
+ @new-nodes[ $_ ].next = @new-nodes[ $_ + 1 ];
+ }
+
+ @new-nodes[ @new-nodes.elems - 1 ].next = Nil;
+
+ # all done
+ $root.say;
+}