aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-068/luca-ferrari/raku/ch-1.p635
1 files changed, 35 insertions, 0 deletions
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 );
+
+}