diff options
| -rw-r--r-- | challenge-068/mark-anderson/raku/ch-1.raku | 47 | ||||
| -rw-r--r-- | challenge-068/mark-anderson/raku/slow-ch-1.raku | 31 |
2 files changed, 78 insertions, 0 deletions
diff --git a/challenge-068/mark-anderson/raku/ch-1.raku b/challenge-068/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..d42319fc1d --- /dev/null +++ b/challenge-068/mark-anderson/raku/ch-1.raku @@ -0,0 +1,47 @@ +#!/usr/bin/env raku + +my @matrix = [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 0, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1]; + +my $rows = @matrix.elems; +my $cols = @matrix[0].elems; + +my @zeroes = gather { + for ^$rows -> $r { + for ^$cols -> $c { + take [$r, $c] if @matrix[$r][$c] == 0; + } + } +} + +my %seen_row; +my %seen_col; + +for @zeroes -> $p { + unless %seen_row{$p[0]} { + @matrix[$p[0]] = [0 xx $cols]; + %seen_row{$p[0]} = True; + } + + unless %seen_col{$p[1]} { + @matrix.map({$_[$p[1]] = 0;}); + %seen_col{$p[1]} = True; + } +} + +say @matrix.join("\n"); diff --git a/challenge-068/mark-anderson/raku/slow-ch-1.raku b/challenge-068/mark-anderson/raku/slow-ch-1.raku new file mode 100644 index 0000000000..40b2bef17f --- /dev/null +++ b/challenge-068/mark-anderson/raku/slow-ch-1.raku @@ -0,0 +1,31 @@ +#!/usr/bin/env raku + +my @matrix = [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 0, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1, 1]; + +my @rows = (^@matrix).grep({@matrix[$_].any == 0}); + +my @cols = (^@matrix[0]).grep({([Z] @matrix)[$_].any == 0}); + +@matrix[$_] = [0 xx @matrix] for @rows; + +@matrix = [Z] @matrix; + +@matrix[$_] = [0 xx @matrix[0]] for @cols; + +say ([Z] @matrix).join("\n"); |
