diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2020-07-06 11:57:54 +0200 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2020-07-06 11:57:54 +0200 |
| commit | 54067ab989c59da0a13e3b8a3fd1ade715ae9496 (patch) | |
| tree | 42165e3bec553e7128a08f9717d2b60f1230bcd2 | |
| parent | 5293ff2999ca96715e38bff3a90c0710e0ff66e3 (diff) | |
| download | perlweeklychallenge-club-54067ab989c59da0a13e3b8a3fd1ade715ae9496.tar.gz perlweeklychallenge-club-54067ab989c59da0a13e3b8a3fd1ade715ae9496.tar.bz2 perlweeklychallenge-club-54067ab989c59da0a13e3b8a3fd1ade715ae9496.zip | |
Task1 done.
| -rw-r--r-- | challenge-068/luca-ferrari/raku/ch-1.p6 | 35 |
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 ); + +} |
