diff options
| author | Mark Anderson <mark@frontrangerunner.com> | 2020-07-06 14:08:25 -0600 |
|---|---|---|
| committer | Mark Anderson <mark@frontrangerunner.com> | 2020-07-06 14:08:25 -0600 |
| commit | 91c47b77cbb6c3eafc6ac198eeb6bc5b6cee71f3 (patch) | |
| tree | b30d44e92ace80b7f86da49b7ee97bd3f858be2f | |
| parent | 8164b11ba10da1d7a5d4241a393bad074b0a0cea (diff) | |
| download | perlweeklychallenge-club-91c47b77cbb6c3eafc6ac198eeb6bc5b6cee71f3.tar.gz perlweeklychallenge-club-91c47b77cbb6c3eafc6ac198eeb6bc5b6cee71f3.tar.bz2 perlweeklychallenge-club-91c47b77cbb6c3eafc6ac198eeb6bc5b6cee71f3.zip | |
Challenge 68 Solution 1
| -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"); |
